Getting Started
  • Introduction and The Goal of This Course
  • Setup
  • Big Words and Javascript
  • Watching this Course in High Definition
  • Understanding, Frameworks, and The Weird Parts
Execution Contexts and Lexical Environments
  • Conceptual Aside: Syntax Parsers, Execution Contexts, and Lexical Environments
  • Conceptual Aside: Name/Value Pairs and Objects
  • Downloading Source Code for This Course
  • The Global Environment and The Global Object
  • The Execution Context - Creation and Hoisting
  • Conceptual Aside: Javascript and 'undefined'
  • The Execution Context - Code Execution
  • Conceptual Aside: Single Threaded, Synchronous Execution
  • Function Invocation and the Execution Stack
  • Functions, Context, and Variable Environments
  • The Scope Chain
  • Scope, ES6, and let
  • What About Asynchronous Callbacks?
Types and Operators
  • Conceptual Aside: Types and Javascript
  • Primitive Types
  • Conceptual Aside: Operators
  • Operator Precedence and Associativity
  • Operator Precedence and Associativity Table
  • Conceptual Aside: Coercion
  • Comparison Operators
  • Equality Comparisons Table
  • Existence and Booleans
  • Default Values
  • Framework Aside: Default Values
Objects and Functions
  • Objects and the Dot
  • Objects and Object Literals
  • Framework Aside: Faking Namespaces
  • JSON and Object Literals
  • Functions are Objects
  • Function Statements and Function Expressions
  • Conceptual Aside: By Value vs By Reference
  • Objects, Functions, and 'this'
  • Conceptual Aside: Arrays - Collections of Anything
  • 'arguments' and spread
  • Framework Aside: Function Overloading
  • Conceptual Aside: Syntax Parsers
  • Dangerous Aside: Automatic Semicolon Insertion
  • Framework Aside: Whitespace
  • Immediately Invoked Functions Expressions (IIFEs)
  • Framework Aside: IIFEs and Safe Code
  • Understanding Closures
  • Understanding Closures - Part 2
  • Framework Aside: Function Factories
  • Closures and Callbacks
  • call(), apply(), and bind()
  • Functional Programming
  • Functional Programming - Part 2
Object-Oriented Javascript and Prototypal Inheritance
  • Conceptual Aside: Classical vs Prototypal Inheritance
  • Understanding the Prototype
  • Everything is an Object (or a primitive)
  • Reflection and Extend
Building Objects
  • Function Constructors, 'new', and the History of Javascript
  • Function Constructors and '.prototype'
  • Dangerous Aside: 'new' and functions
  • Conceptual Aside: Built-In Function Constructors
  • Dangerous Aside: Built-In Function Constructors
  • Dangerous Aside: Arrays and for..in
  • Object.create and Pure Prototypal Inheritance
  • ES6 and Classes
Odds and Ends
  • Initialization
  • 'typeof' , 'instanceof', and Figuring Out What Something Is
  • Strict Mode
  • Strict Mode Reference
Examining Famous Frameworks and Libraries
  • Learning From Other's Good Code
  • Deep Dive into Source Code: jQuery - Part 1
  • Deep Dive into Source Code: jQuery - Part 2
  • Deep Dive into Source Code: jQuery - Part 3
Let's Build a Framework / Library!
  • Requirements
  • Structuring Safe Code
  • Our Object and Its Prototype
  • Properties and Chainable Methods
  • Adding jQuery Support
  • Good Commenting
  • Let's Use Our Framework
  • A Side Note
BONUS Lectures
  • TypeScript, ES6, and Transpiled Languages
  • Transpiled Languages References
BONUS: Getting Ready for ECMAScript 6
  • Existing and Upcoming Features
  • ES6 Features Reference
Conclusion
  • Learning to Love the Weird Parts