How JavaScript Works Behind the Scenes - Execution Contexts in Detail: Creation and Execution Phases and Hoisting