Understand Javascript

An advanced JavaScript course for everyone! Scope, closures, prototypes, 'this', build your own framework, and more.

Last updated 2022-01-10 | 4.8

- Grasp how Javascript works and it's fundamental concepts
- Write solid
- good Javascript code
- Understand advanced concepts such as closures
- prototypal inheritance
- IIFEs
- and much more.

What you'll learn

Grasp how Javascript works and it's fundamental concepts
Write solid
good Javascript code
Understand advanced concepts such as closures
prototypal inheritance
IIFEs
and much more.
Drastically improve your ability to debug problems in Javascript.
Avoid common pitfalls and mistakes other Javascript coders make
Understand the source code of popular Javascript frameworks
Build your own Javascript framework or library

* Requirements

* Basic Javascript knowledge (variables
* loops
* and basic functions - that's all the course expects you to know!)
* A browser and text editor

Description

Javascript is the language that modern developers need to know, and know well. Truly knowing Javascript will get you a job, and enable you to build quality web and server applications.

NOTE: This course includes information on ECMAScript 6 (ES6) the next version of Javascript!

In this course you will gain a deep understanding of Javascript, learn how Javascript works under the hood, and how that knowledge helps you avoid common pitfalls and drastically improve your ability to debug problems. You will find clarity in the parts that others, even experienced coders, may find weird, odd, and at times incomprehensible. You'll learn the beauty and deceptive power of this language that is at the forefront of modern software development today.

This course will cover such advanced concepts as objects and object literals, function expressions, prototypical inheritance, functional programming, scope chains, function constructors (plus new ES6 features), immediately invoked function expressions (IIFEs), call, apply, bind, and more.

We'll take a deep dive into the source code of popular frameworks such as jQuery and Underscore to see how you can use your understanding of Javascript to learn (and borrow) from other's good code.

Finally, you'll learn the foundations of how to build your own Javascript framework or library.

What you'll learn in this course will make you a better Javascript developer, and improve your abilities in AngularJS, NodeJS, jQuery, React, Ember, MongoDB, and all other Javascript-based technologies!

Learn to love Javascript, and code in it well.

Note: In this course you'll also get downloadable source code. You will often be provided with 'starter' code, giving you the base for you to start writing your code, and 'finished' code to compare your code to.

Who this course is for:

  • Those with basic Javascript skills who wish to improve
  • Experienced coders coming from other programming languages
  • New and experienced Javascript coders who want to deepen their understanding of the language
  • Anyone who has found concepts just as object prototypes, closures, and other advanced concepts difficult to learn
  • Those who have suffered surprising errors while writing Javascript, and want to learn why and how to avoid them
  • Those interested in building their own frameworks, or being better able to learn from the source code of other well-known frameworks and libraries

Course content

13 sections • 88 lectures

Introduction and The Goal of This Course Preview 04:56

Setup Preview 03:27

Setup (Visual Studio Code) Preview 00:25

Big Words and Javascript Preview 01:25

Watching this Course in High Definition Preview 00:50

Understanding, Frameworks, and The Weird Parts Preview 04:17

Conceptual Aside: Syntax Parsers, Execution Contexts, and Lexical Environments Preview 07:35

Conceptual Aside: Name/Value Pairs and Objects Preview 04:08

Downloading Source Code for This Course Preview 00:33

The Global Environment and The Global Object Preview 10:58

The Execution Context - Creation and Hoisting Preview 09:43

Conceptual Aside: Javascript and 'undefined' Preview 08:04

The Execution Context - Code Execution Preview 02:54

Conceptual Aside: Single Threaded, Synchronous Execution Preview 02:16

Function Invocation and the Execution Stack Preview 08:06

Functions, Context, and Variable Environments Preview 07:56

The Scope Chain Preview 17:25

Scope, ES6, and let Preview 04:18

What About Asynchronous Callbacks? Preview 10:26

Conceptual Aside: Types and Javascript Preview 02:50

Primitive Types Preview 05:17

Conceptual Aside: Operators Preview 06:32

Operator Precedence and Associativity Preview 14:14

Operator Precedence and Associativity Table Preview 00:18

Conceptual Aside: Coercion Preview 06:14

Comparison Operators Preview 19:42

Equality Comparisons Table Preview 00:18

Existence and Booleans Preview 07:24

Default Values Preview 07:51

Framework Aside: Default Values Preview 07:11

Objects and the Dot Preview 15:23

Objects and Object Literals Preview 10:32

Framework Aside: Faking Namespaces Preview 08:07

JSON and Object Literals Preview 07:17

Functions are Objects Preview 08:02

Function Statements and Function Expressions Preview 20:32

Conceptual Aside: By Value vs By Reference Preview 16:09

Objects, Functions, and 'this' Preview 21:26

Conceptual Aside: Arrays - Collections of Anything Preview 05:39

'arguments' and spread Preview 12:00

Framework Aside: Function Overloading Preview 04:43

Conceptual Aside: Syntax Parsers Preview 02:25

Dangerous Aside: Automatic Semicolon Insertion Preview 05:46

Framework Aside: Whitespace Preview 04:25

Immediately Invoked Functions Expressions (IIFEs) Preview 17:07

Framework Aside: IIFEs and Safe Code Preview 08:05

Understanding Closures Preview 11:09

Understanding Closures - Part 2 Preview 19:20

Framework Aside: Function Factories Preview 12:24

Closures and Callbacks Preview 08:26

call(), apply(), and bind() Preview 20:54

Functional Programming Preview 20:17

Functional Programming - Part 2 Preview 08:05

Conceptual Aside: Classical vs Prototypal Inheritance Preview 05:11

Understanding the Prototype Preview 14:02

Everything is an Object (or a primitive) Preview 05:46

Reflection and Extend Preview 14:59

Function Constructors, 'new', and the History of Javascript Preview 15:53

Function Constructors and '.prototype' Preview 10:24

Dangerous Aside: 'new' and functions Preview 04:16

Conceptual Aside: Built-In Function Constructors Preview 10:32

Dangerous Aside: Built-In Function Constructors Preview 03:57

Dangerous Aside: Arrays and for..in Preview 03:16

Object.create and Pure Prototypal Inheritance Preview 12:37

ES6 and Classes Preview 06:27

Initialization Preview 05:41

'typeof' , 'instanceof', and Figuring Out What Something Is Preview 06:41

Strict Mode Preview 05:51

Strict Mode Reference Preview 00:21

Learning From Other's Good Code Preview 03:51

Deep Dive into Source Code: jQuery - Part 1 Preview 21:31

Deep Dive into Source Code: jQuery - Part 2 Preview 15:38

Deep Dive into Source Code: jQuery - Part 3 Preview 11:22

Requirements Preview 02:57

Structuring Safe Code Preview 03:07

Our Object and Its Prototype Preview 09:17

Properties and Chainable Methods Preview 16:58

Adding jQuery Support Preview 05:22

Good Commenting Preview 02:21

Let's Use Our Framework Preview 08:11

A Side Note Preview 00:32

TypeScript, ES6, and Transpiled Languages Preview 04:33

Transpiled Languages References Preview 00:38

Learning to Love the Weird Parts Preview 01:14