Syntax Parser - A program that reads your JS code character-by-character, determines what it is doing and if its grammer is valid. The program / engine examining your code can also translate the code into machine understandable code.
Lexical Environment - This determines where something (functions / variables) sit physically in the JS code that you write. A lexical environment exists in programming languages in which where you write something (i.e. functions / variables) is important.
function hello() {
var a = 'Hello World!';
}
Here, the variable 'a' lexically _sits inside _the function hello()
.
Execution Context - A wrapper to help manage the code that is running.
There are lots of lexical environments. Which one is currently running is managed via execution contexts. It can contain the things beyond what you've written in your code.