JavaScript: Understanding the Weird Parts
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.
More
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!
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.
- 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
Watch Online JavaScript: Understanding the Weird Parts
# | Title | Duration |
---|---|---|
1 | Introduction and The Goal of This Course | 04:57 |
2 | Setup | 03:28 |
3 | Big Words and Javascript | 01:26 |
4 | Understanding, Frameworks, and The Weird Parts | 04:18 |
5 | Conceptual Aside: Syntax Parsers, Execution Contexts, and Lexical Environments | 07:36 |
6 | Conceptual Aside: Name/Value Pairs and Objects | 04:09 |
7 | The Global Environment and The Global Object | 10:59 |
8 | The Execution Context - Creation and Hoisting | 09:44 |
9 | Conceptual Aside: Javascript and 'undefined' | 08:05 |
10 | The Execution Context - Code Execution | 02:55 |
11 | Conceptual Aside: Single Threaded, Synchronous Execution | 02:17 |
12 | Function Invocation and the Execution Stack | 08:07 |
13 | Functions, Context, and Variable Environments | 07:57 |
14 | The Scope Chain | 17:26 |
15 | Scope, ES6, and let | 04:19 |
16 | What About Asynchronous Callbacks? | 10:27 |
17 | Conceptual Aside: Types and Javascript | 02:51 |
18 | Primitive Types | 05:18 |
19 | Conceptual Aside: Operators | 06:33 |
20 | Operator Precedence and Associativity | 14:15 |
21 | Conceptual Aside: Coercion | 06:15 |
22 | Comparison Operators | 19:43 |
23 | Existence and Booleans | 07:24 |
24 | Default Values | 07:52 |
25 | Framework Aside: Default Values | 07:12 |
26 | Objects and the Dot | 15:24 |
27 | Objects and Object Literals | 10:33 |
28 | Framework Aside: Faking Namespaces | 08:08 |
29 | JSON and Object Literals | 07:18 |
30 | Functions are Objects | 08:03 |
31 | Function Statements and Function Expressions | 20:33 |
32 | Conceptual Aside: By Value vs By Reference | 16:10 |
33 | Objects, Functions, and 'this' | 21:27 |
34 | Conceptual Aside: Arrays - Collections of Anything | 05:40 |
35 | 'arguments' and spread | 12:01 |
36 | Framework Aside: Function Overloading | 04:44 |
37 | Conceptual Aside: Syntax Parsers | 02:26 |
38 | Dangerous Aside: Automatic Semicolon Insertion | 05:48 |
39 | Framework Aside: Whitespace | 04:26 |
40 | Immediately Invoked Functions Expressions (IIFEs) | 17:08 |
41 | Framework Aside: IIFEs and Safe Code | 08:06 |
42 | Understanding Closures | 11:10 |
43 | Understanding Closures - Part 2 | 19:21 |
44 | Framework Aside: Function Factories | 12:25 |
45 | Closures and Callbacks | 08:27 |
46 | call(), apply(), and bind() | 20:56 |
47 | Functional Programming | 20:18 |
48 | Functional Programming - Part 2 | 08:06 |
49 | Conceptual Aside: Classical vs Prototypal Inheritance | 05:12 |
50 | Understanding the Prototype | 14:03 |
51 | Everything is an Object (or a primitive) | 05:47 |
52 | Reflection and Extend | 15:00 |
53 | Function Constructors, 'new', and the History of Javascript | 15:55 |
54 | Function Constructors and '.prototype' | 10:25 |
55 | Dangerous Aside: 'new' and functions | 04:17 |
56 | Conceptual Aside: Built-In Function Constructors | 10:33 |
57 | Dangerous Aside: Built-In Function Constructors | 03:58 |
58 | Dangerous Aside: Arrays and for..in | 03:17 |
59 | Object.create and Pure Prototypal Inheritance | 12:38 |
60 | ES6 and Classes | 06:28 |
61 | Initialization | 05:42 |
62 | 'typeof' , 'instanceof', and Figuring Out What Something Is | 06:42 |
63 | Strict Mode | 05:52 |
64 | Learning From Other's Good Code | 03:52 |
65 | Deep Dive into Source Code: jQuery - Part 1 | 21:32 |
66 | Deep Dive into Source Code: jQuery - Part 2 | 15:39 |
67 | Deep Dive into Source Code: jQuery - Part 3 | 11:23 |
68 | Requirements | 02:59 |
69 | Structuring Safe Code | 03:08 |
70 | Our Object and Its Prototype | 09:18 |
71 | Properties and Chainable Methods | 16:59 |
72 | Adding jQuery Support | 05:23 |
73 | Good Commenting | 02:22 |
74 | Let's Use Our Framework | 08:12 |
75 | A Side Note | 00:33 |
76 | TypeScript, ES6, and Transpiled Languages | 04:34 |
77 | Existing and Upcoming Features | 00:55 |
78 | Promises, Async, and Await | 42:44 |
79 | Learning to Love the Weird Parts | 01:15 |