Например вот код:
console.log("Hello world")
setTimeout(() => console.log("Hello timeout"), 50)
console.log("Hello JS")
Eventloop-у дается задание, выполнить скрипт.
Интерпретатор выполняет первую строку, затем вторую.
Т.е таймер, создается вторая задача. На данный момент их 2.
1) Выполнить скрипт
2) Вызвать таймер не раньше чем 50 мс.
Все задания выполняются по очередно.
Поэтому для начала нужно чтобы скрипт полностью выполнился.
Т.е выводится еще и hello js.
Эта задача удаляется и eventloop смотрит, есть ли у него еще задачи.
Потом выполняется вторая задача.
В итоге:
console.log("Hello world")
console.log("Hello JS")
console.log("Hello timeout")