In this video series, Stephen Mayeux walks through the algorithmic challenges at Free Code Camp.
-
YouTube automatically plays videos at 480p, but it is recommended to play these videos at 720p High Definition and full screen.
-
These videos will be very practical because they will walk through the algorithmic challenges at Free Code Camp. As such, they will contain solutions to the challenges. If you want to solve the solution yourself, don't watch this video! When you have finally solved the challenge OR if you get stuck, come back and watch the video.
-
Do not be a passive learner. After watching each video, open up your favorite text editor and start applying what you have learned. Experiment with the syntax and be very, very curious. Read more about the syntax with the official JavaScript documentation. Just don't watch the videos without coding.
Video 0 - Basics of JavaScript Functions -- Syntax of functions. Passing 0, 1, or multiple arguments. Calling/invoking functions. The return
statement. undefined
values. YouTube: https://youtu.be/Zg6ESLIasic
-
Reverse a String in JavaScript -- Method chaining.
split
,reverse
, andjoin
methods in JavaScript. YouTube: https://youtu.be/gPAtcWuM8AM -
Factorialize a Number --
for
loops andif
/else
blocks. Using thereduce
array method. Functional programming. Recursive programming. YouTube: https://youtu.be/43XF7GBY05E -
Checking for Palindromes -- Recursive programming.
slice
andreplace
methods. Regular Expressions. YouTube: https://youtu.be/mQ6ZB24DInc -
Finding Longest Word in a Sentence --
for
loops. Functional programming withforEach()
. Usingsplit(' ')
as opposed tosplit('')
. YouTube: https://youtu.be/U5-jiTDgmR8 -
Title Case a Sentence -- Using the
map()
method to return a new array. YouTube: https://youtu.be/fsvBwqOrkKs -
Return Largest Numbers in an Array -- Using
push()
to add numbers to the end of an array. Usingsort()
to sort an array of Strings and Integers. YouTube: https://youtu.be/YD4M77uB3lo -
Confirm the Ending -- Using
Math.abs()
and-Math.abs()
to generate absolute numbers. Using.slice()
and its alternative.substr()
. YouTube: https://youtu.be/AsLtWDncqeQ -
Repeat a string repeat a string -- Using the
.repeat()
method (surprise!) to repeat strings.Ternary operators
for simplifiedif/else
blocks. YouTube: https://youtu.be/stGujQgT9EM -
Truncated String -- Nothing new here! Just a simple
.slice()
method with anif
/else if
/else
block. YouTube: https://youtu.be/pnUjKTgMhe8 -
Chunky Monkey -- Iterating through arrays using
while
loops. Shorteningcounter = counter + size
tocounter += size
. YouTube: https://youtu.be/4MR5N0_KINM -
Slasher Flick -- Removing items from the beginning of an array with
shift()
. Inserting and/or removing items from an array withsplice()
. YouTube: https://youtu.be/OhOOyVrERkI -
Mutations -- Checking whether or not a character exists in a string using
indexOf()
. YouTube: https://youtu.be/cz6JbsG4A-Y -
Falsy Bouncer -- Boolean objects and the
filter()
array method. YouTube: https://youtu.be/6a0Owm4PUA0 -
Seek and Destroy -- Arguments object and converting it into an array using
Array.prototype.slice.call(arguments, 1)
. Checking whether or not an array includes a value withincludes()
. YouTube: https://youtu.be/jm7s-tZ508Y -
Where Do I Belong -- Joining two arrays with
concat()
and how it differs frompush()
. YouTube: https://youtu.be/t4ETMI5m26g -
Ceasers Cipher -- Encoding and decoding strings with
fromCharCode()
andcharCodeAt()
. YouTube: https://youtu.be/37yPWD-g-Ik
Watch the Intermediate Prep Video!!! -- YouTube: https://youtu.be/SqZJr2pSr-0
-
Sum of Numbers in a Range -- Using
Math.min()
andMath.max()
to add up the numbers within a range. YouTube: https://youtu.be/dlwEs4xcloY -
Diff of Two Arrays -- Finding the symmetric difference or the difference between two arrays. This function uses our good friends
filter()
,concat()
,slice()
, andindexOf()
. YouTube: https://youtu.be/ylbjD5fHytI -
Roman Numeral Converter -- Object literals. Iterating through objects using
for...in
loops. The difference betweenMath.round()
andMath.trunc()
. Our good old friendString.repeat()
. YouTube: https://youtu.be/OHIeCYZWVuQ -
Where Art Thou -- Object literals. Creating an array of object keys with
Object.keys()
and testing whether or not every item of an array passes a test withevery()
. YouTube: https://youtu.be/zFYkDRnKdLw -
Search and Replace -- If you've been following along, this challenge is nothing you couldn't do on your own! Very simple, but I introduce the
.charAt()
method. YouTube: https://youtu.be/4Zx0OFWVj-w -
Pig Latin -- Converting an English word into Pig Latin. YouTube: https://youtu.be/Rg-0XRgsFlI
-
DNA Pairings -- Creating a 2d array of paired DNA elements. YouTube: https://youtu.be/TlksPje9A5Y
-
Missing Letter -- Finding the missing letter in a range of letters. YouTube: https://youtu.be/ZdU3v0irI24
-
Boo Who -- Boolean primitives and the
typeof
keyword. YouTube: https://youtu.be/QCFSd-JpZgg -
Sorted Union -- Arguments object. Functions as first-class objects in JavaScript. Using
reduce
,concat
, andfilter
all in one! YouTube: https://youtu.be/73IeA87eXUk -
Convert HTML Entities -- Escaping characters. Replacing characters in a string with values from an object literal. YouTube: https://youtu.be/p0SN049ikj8
-
Spinal Tap Case -- Converting strings to spinal-case-with-regex. Capturing groups in Regex and our old friend the
replace()
method. YouTube: https://youtu.be/o66bwArtShw -
Sum of All Odd Fibonacci Numbers -- Adding new methods to arrays via prototypal inheritance. The
this
keyword. YouTube: https://youtu.be/6gsOXQWDGwo -
Sum All Primes -- Function hoisting. Writing modular code by breaking out logic into separate functions. YouTube: https://youtu.be/7-Z7lcm999o
-
Smallest Common Multiple -- Finding the smallest common multiple for a range of numbers using Euclid's alrogithm. YouTube: https://youtu.be/itPtMtdEPis
-
Finders Keepers -- Using function expressions with the
filter()
method. YouTube: https://youtu.be/0JrZju2q2bs -
Drop It -- Using
while
to loop through something an unknown number of times. Usingshift()
to remove the first element of an array. YouTube: https://youtu.be/T3Q5Pffp6EM -
Steamroller -- Flatten a nested array using
reduce()
and recursion. 2 solutions available! YouTube: https://youtu.be/0Ke8KQSOFms -
Binary Agents -- Convert a string of binary code into human readable text with
parseInt()
andfromCharCode()
. YouTube: https://youtu.be/ghLTDAvLs_w -
Everything Be True -- Checking whether or not all objects in a collection have a certain property with
every()
. YouTube: https://youtu.be/UuRsIAjTKzI -
Arguments Optional -- Returning functions and preserving values with closures. YouTube: https://youtu.be/wA45ErxhRao
Watch the Advanced Prep Video!! -- YouTube: https://youtu.be/dv6pkLYmqY0
-
Validate US Phone Numbers -- Very seriously long and complex
Regular Expressions
. UsingRegex.test()
to validate strings against a regular expression. YouTube: https://youtu.be/JB71tFPsm2s -
Symmetric Difference -- Finding the symmetric difference of 2 or more sets of numbers. Uses
reduce()
and 2 helper functions. YouTube: https://youtu.be/v04Bmbfa4Jk -
Exact Change -- Good, old-fashioned problem solving with the methods you already know and love. YouTube: https://youtu.be/_nAUQYOjIek
-
Inventory Update -- Updating the current inventory (a 2D array) with the newest inventory (another 2D array). YouTube: https://youtu.be/5FoMIM5IChw
-
No Repeats Please -- Calculate the number of permutations of a string with non-repeating values. YouTube: https://youtu.be/B5lUyJDkWzE
-
Friendly Date Ranges -- Using
Date.parse()
and theDate
object to create friendly date ranges. YouTube: https://youtu.be/Q1qlJkPb9Nk -
Make A Person -- Object constructors and the
this
keyword. Difference between public and private properties. Configuring object properties withObject.defineProperty()
. YouTube: https://youtu.be/vhqkRKkeyVo -
Map the Debris -- Doing astronomical calculations using
forEach()
andreduce()
. YouTube: https://youtu.be/DQxLcQKVkP4 -
Pairwise -- The final challenge (unless Free Code Camp adds more)! Using additional arguments with
reduce()
,NaN
, and multiple variable assignments. YouTube: https://youtu.be/yu6C1YLIdQA
Contributions is what makes open source projects succeed! If you see a mistake or think you have a useful improvement, fork/clone this repo and make a pull request!
If you contribute a video lesson to this series, then you are amazing! Just follow these steps:
- Upload your video to YouTube.
- Submit one JavaScript file for each lesson.
- Update the README and add your lesson under the Content section.
- Make a pull request and await everlasting glory.