Синхронно или асинхронно работает console.log() - что делать, если выводит неправильные значения

Вызов console.log() не является стандартным (не стандартизирован в рамках языка JavaScript на момент создания этой заметки), а потому его реализация зависит от браузера.
Известно немало примеров, когда реализация (см. в Сети "console.log() async or sync?") консоли откладывает вывод объекта, просто храня его ссылку, по ссылке объект меняется и мы получаем совсем не то, что ожидали, после того, когда печать всё же проводится.

То есть по сути, вывод в консоль будет работать в указанном порядке (первый по коду console.log() будет выполнен первым, а второй вторым и т.д.), но при распечатке относительно сложных сущностей их значения могут выводится уже после следующих (иногда даже сильно после) за печатающим console.log() изменений.

Решение

Если вы хотите достоверно узнать, какое значение принимает переменная в конкретной строчке кода, используйте отладчик браузера (выполнение кода по шагам)