In this course, you discovered how to program with JavaScript. Let's take a few minutes to recap what you learned. In the opening module, you discovered real-world applications of JavaScript and uncovered possible job opportunities. You also learned how to install VS code on Windows so that you could code in JS. You did learned about the importance of JavaScript in programming and the different libraries used by JavaScript developers. As you progress through the lesson, you encountered key concepts in JavaScript. By engaging with these concepts you discovered how to identify and declare variables, differentiate between data types, and recognize math and logical operators. You also learned how to perform basic arithmetic using the number data type and utilize strings and Booleans. In the next lesson, you explored conditionals and loops. During your exploration of these concepts, you learned how to script different forms of JavaScript conditional statements and work with different types of loops, such as for, while, and nested. In Module 2 you explored the building blocks of a program. You began this module with a lesson on arrays, objects, and functions. During this lesson you learned how to explain the purpose of functions and describe their benefits, outline the process for building an array and accessing its contents, and you now understand the array characteristics and concatenation operators of strings, and you can now also build and call functions, create custom objects, explain how math objects work, and interact with arrays and objects. You then moved onto the next lesson in which you explored the concept of error prevention. During this lesson, you discovered how to recognize the differences between bugs and errors, demonstrate try-catch blocks, and explain the concepts of undefined, null and empty string values. The next module on programming paradigms began with the lesson on functional programming, in which you learned how to explain how the functional paradigm works, outline the concept of recursion, describe how scope operates, and explain different forms of scope such as let, const, and var. In the next lesson, you explored object oriented programming and learned the principles of object oriented programming, how to deploy classes in JavaScript, build and utilize constructors, and make use of inheritance. You then explored advanced JavaScript features in which you learned how to destruct arrays and objects, utilized for-of loops and objects, explain the concepts of template literals and data structures, and demonstrate the use of the spread and rest operators. Finally, you then explored how JavaScript operates in the browser. During this lesson, you learned how to manipulate JavaScript in the DOM, make use of JavaScript interactivity in the browser, work with events, and capture and move data around the web. In the next module, you looked at testing and compatibility. The lesson began with an introduction to testing in which you learned about the concept of testing and how to practice different types of testing, how to write a unit test, the process for writing tests with Jest, and how to apply test-driven development. You then reviewed JavaScript testing challenges in which you learned how to navigate other JS environments like Node and NPM, the concepts of webpack and transpiring, the process for working with arrow functions and classes in React, and you discovered the role the DOM plays in testing challenges, and finally, you discovered how to write tests with Jest. Well done on completing this recap. Now it's time to try out what you've learned in the graded assessment. Good luck.