Ваш вопрос по сути не JS, а информатика, теория компиляции)
Принципиальная разница - сначала токенайзер берёт полотно кода и дробит на токены по пробелам, отступам, скобкам и прочим частям, затем лексер ещё запоминает, что этот токен - оператор сравнения, а этот токен - Number, этот - строка. А дальше парсер создаёт абстрактное дерево, код выполняется и мы счастливы) Возможно, в движках JS это один процесс, но, обычно это всё же разные этапы прочтения кода компиляторами.
P.S:
https://en.wikipedia.org/wiki/Compilers:_Principle... - эта книга поможет разобраться со многими базовыми вопросами информатики.