Are you struggling to figure out what JavaScript skills you need to build real-world apps? Check out this concise, example-filled course that provides the core JavaScript concepts you need to be productive with libraries like React, Angular, and Vue.

If you want to build serious web applications, the language to use is JavaScript.

But what JavaScript skills do you need to build apps effectively?

What Are the Essential JavaScript Skills?

There are tons of courses on JavaScript available find online, but few specialize in what so many developers want to know:

What JavaScript skills are essential to building your own applications?

There is a gap between learning vanilla JavaScript and learning a library like React, Angular, and Vue for creating single-page JavaScript applications.

I've put together a complete course with the goal of showing you how to bridge this gap.

My goal is not only to teach you the skills you need while presenting real-world examples to solidify your understanding, but also to give you a new perspective. You'll find a better way of looking at your JavaScript code that will help you start thinking like a professional app developer.

Want to get started now? Take the entire course here.

Course Overview

Let's take a brief tour through the course and each major section. We'll see how each section will ensure that you're taught JavaScript in the most effective, no-nonsense way possible.

In this course, we'll develop our skills from basic concepts to more complex ones. Even if you're an intermediate JavaScript developer, we'll cover every concept with additional depth and observations on the language that you likely haven't heard before.

Variables and Strings

We'll begin with the building blocks of any JS program: variables.

First we'll cover declaring variables with let and const and how they are an improvement over the old var syntax. We'll learn concepts like block scoping, variable shadowing and the temporal dead zone, but also discover how these new keywords can make our code easier to process.

For example, why the salePrice variable below becomes more readable when we declare it with const instead of let or var.

Click to access the course Click to watch this lecture

Because we declare the variable with as a constant, we know that it won't be assigned a different value later on. This makes our code easier to understand both for other developers and for ourselves.

Finally, in this section we'll touch on template literals, and how they improve strings within JavaScript in basically every way, from formatting text, to inserting dynamic values, and more.

Types and Conditionals

Next we'll touch on types and conditionals, which go hand in hand.

We'll first take a look at a strange (and often poorly understood) part of JavaScript called type coercion, which means how types are changed from one value to another.

Types can change implicitly when we write conditionals and this means we must know about truthy and falsy values, values that are subtly coerced to the boolean true and falsy, respectively.

We'll see how we can use truthy and falsy values to our advantage by creating shorter conditionals using the && (and) and || (or) operators. This trick, known as short circuiting, is the basis of how JS libraries like React display or hide elements.

Click to access the courseClick to watch this lecture

Then we'll see how to shorten our if-else conditionals with the ternary operator, and how they come in handy in situations when we want to conditionally set a variable's value.


After that, we'll dive into functions, the powerhouse of any Javascript app.

We'll demystify a crucial feature of functions called closures. We'll wrap our head around what a closure is by through creating our in a practical example.

This will enable us to see why closures are worth knowing and how they can improve our JavaScript code by keeping track of values between function calls:

Click to access the course
Click to watch this lecture

We'll cover a type of function, which you'll find in every modern Javascript app, namely, arrow functions. With arrow functions, we can greatly cut down our code as we go through all of the available tricks to making them as concise as possible.

Lastly, we'll touch on default values in functions and how they can make our code more reliable, especially if an expected argument isn't provided.


From primitive data types, we'll move onto objects.

Understanding essential app-building concepts like mutations and immutability isn't possible without knowing the difference between primitive types and object types in JavaScript. We'll cover this difference in detail and see firsthand why it matters for the reliability of our code.

We'll touch on a variety of practical patterns to more easily get our object data through object destructuring, as you see below:

Click to access the course
Click to watch this lecture

Then after destructuring our objects, we'll see how to better assemble them. By using the object spread operator we can seamlessly merge multiple objects in an immutable fashion.


Arrays are essential for any list of data that we display in our apps and we need to know how to manipulate them with ease.

We'll cover how to perform actions on all elements in arrays through higher order array functions like map and filter to transform our elements or remove them from our array.

Additionally, we'll use methods like find to get individual elements based on certain conditions:

Click to access the course
Click to watch this lecture

Then we'll cover the most important array method, reduce, and see its power to transform our array data into virtually any data type we want.

Object-Oriented JavaScript

Next we'll get started with object-oriented programming and cover the core idea behind it that makes object oriented programming in JavaScript possible–the constructor function.

Constructor functions make it possible to give our objects shared behavior (functions) through something called the prototype chain.

Through another newer JavaScript feature called classes, we'll cover how we can easily inherit functionality through what's known as prototypical inheritance and extend our classes to share features between them.

Click to access the course
Click to watch this lecture

Async JavaScript

After that we'll move on to async JavaScript, which is a necessary skill to have and understand if want to create sophisticated JavaScript programs of any kind.

We'll begin with a discussion of what asynchronous code is and how it was handled in the past using callback functions and how this creates problems in our code (such as 'callback hell').

Fortunately, we'll fix some of the inherent problems with using callbacks through an ES6 feature called a Promise. We'll gain experience using promises in a practical way by getting familiar with the browser's Fetch API, which allows us to make HTTP requests and bring outside data into our apps.

Then, best of all, we'll touch on how to make our promises work and look just like synchronous code so we can easily reason about it with the help of the new async-await syntax for functions.

Click to access the course
Click to watch this lecture

Essential Topics

We'll wrap up the course with some key skills necessary for starting to build complete JavaScript projects. First of all, we'll do a deep dive into ES Modules, an ES6 feature which allows us to share our JavaScript code across files.

We'll tackle thorny issues such as the this keyword by covering a list of concrete rules to follow in order to figure out it's value in any context, such as in a DOM event handler:

Click to access the course
Click to watch this lecture

And finally, we'll wrap up the course with a general discussion of imperative versus declarative code, which you should strive for in your coding career, and why.

Watch the course now

Take this course and, within an afternoon or two, you'll learn concepts that will meaningfully grow your JavaScript skillset and enable you to tackle high-powered front-end libraries like React, Angular, Svelte, Vue, and more with confidence.


Become a Professional React Developer

React is hard. You shouldn't have to figure it out yourself.

I've put everything I know about React into a single course, to help you reach your goals in record time:

Introducing: The React Bootcamp

It’s the one course I wish I had when I started learning React.

Click below to try the React Bootcamp for yourself:

Click to join the React Bootcamp
Click to get started