Javascript is the scripting language of web browsers.

A scripting language is one that's intended to let you control another technology, in this case the web browser. One thing this means is that Javascript relies entirely on the browser for input and output, as we will shortly see.

Originally Javascript was used just to add simple interactivity to standard HTML pages but it is now used to write very large and complicated applications. Over time the Javascript "engines" built into popular browsers, which take the code and make it run, got faster.

Node.js is an application built around one of those engines. It allows Javascript to run outside of the browser by providing its own set of APIs (Application Programming Interfaces).

For a Javascript program to run in the browser, there first needs to be an HTML file. This is just a convention stemming from the fact that the job of web-browsers is to display web-pages. If you instead try to open a Javascript file directly with your browser, you'll see the source code, displayed like any other text file.

Once you've got an HTML file, you can add Javascript inside it, between "script" tags, or in a separate file that you then reference, also using "script" tags.

Javascript has been much improved over the years and the modern language has lots of powerful features that can make it enjoyable to program in. It also retains backwards compatibility wherever possible, meaning there are some out-dated and unhelpful things built into the language.

For many years Douglas Crockford's 'Javascript the Good Parts' was considered a go-to resource for learning which parts of the language should be avoided and which patterns preferred. That book is out of date now with introduction of ES6 (Javascript is actually called Ecmascript, because reasons) and the subsequent iterations (now on a rolling 'evergreen' schedule) but the principle remains true - Javascript it a great language, if you avoid the bad parts.

Javascript is a great language to learn programming with. All the tools are at your disposal; the source code for other people's programs is available to read in every web page, there's a huge developer community, your programs can be distributed to and run by anyone who has a web browser.

It isn't a perfect language. It has it's quirks. Lots of people like to hate Javascript, mostly I think because we're stuck with it.

My goal is to walk you through all the features of the new and improved Javascript, pointing out what I think are the best parts available and which parts we probably don't want to use ourselves but that we still need to know about because they will have been used in the past in code that we might one day have to maintain.