Hackr.io is a community to find and share the best online courses & tutorials. Join them, it only takes 30 seconds.

Here's how it works:


Anybody can submit a course or a tutorial


Community upvotes the useful tutorials


The best tutorials rise to the top

JavaScript: Understanding the Weird Parts (udemy.com)

Visit Tutorial
My Courses
Paid Advanced
#5 out of total 80 JavaScript tutorials & courses

Why developers like this tutorial (one-liner reviews):

Course depth and Coverage

Content quality

Qualified Instructor

Course Pace

Video quality

Add your one-liner review here:

Tutorial Info

Self Paced
11.5 hours on-demand video
Available On Completion
Taught by:
Submitted by:
Visit Tutorial

Tutorial Details

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


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



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 is the target audience?
  • 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


Getting Started

Introduction and The Goal of This Course


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


'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!


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


Learning to Love the Weird Parts

Discuss this tutorial:

Ask a question or write your feedback/review of this course or tell anything to the people taking this course.

Witty Humour
4 months ago

It is one of the most in depth JavaScript course on the Internet.
Seriously take this course seriously, you will start loving JavaScript.

Ayush Nigam
8 months ago

Simply the best. No if no but. Just grab these videos from wherever you can and worship it.

Juan Vazquez
11 months ago

This course made so many things "click" for me—it's at the top of my list of recommended resources for learning JavaScript. The instructor is extremely good at explaining concepts in a clear, understandable way.

1 year ago

definitely recommend this,author teaches goes into indept of JavaScript

1 year ago

after this course passed, the libraries and frameworks are easily understood and taken the right way into practice;

More JavaScript Tutorials