Explain the concept of hoisting in JavaScript.Differentiate between variable and function hoisting.Identify how hoisting affects code execution order.Analyze examples of hoisting in real code snippets.Apply hoisting principles to write cleaner JavaScript.