JavaScript is the programming language of the interactive web. If a page ever responds to you — a button that counts your clicks, a form that checks itself as you type, a map that pans when you drag it — JavaScript is almost certainly making it happen. It runs in every modern browser, on servers through Node.js, and inside countless phone and desktop apps, which makes it one of the most widely used languages on earth.
That reach is exactly why it is the first language worth learning well. The skills you build here transfer almost anywhere you want to put code: the very same syntax that animates a web page also powers a web server and a mobile app. You are not learning a narrow tool; you are learning the lingua franca of interactive software.
flowchart LR B["Web browsers"] --> J["JavaScript"] N["Servers<br/>(Node.js)"] --> J A["Phone & desktop apps"] --> J style J fill:#e0900b,color:#fff
Read what your program actually did
The hardest part of learning to program is not typing the code — it is reading what the code did when it ran, especially when the result is not what you expected. A bug is simply a gap between what you thought your program would do and what it really did, and closing that gap is the daily work of every working programmer.
That is why this course runs your code for real. When you press Run, a genuine JavaScript engine executes your program inside a sandboxed Web Worker — an isolated corner of your own browser — and shows you the exact output it produced. Nothing is simulated, faked, or guessed by a model. The text you see is the truth of what happened.
const skills = ["read code", "debug", "design systems"];
skills.forEach((skill, i) => {
console.log(`${i + 1}. ${skill}`);
});
console.log("Real JavaScript, really running.");
flowchart LR A[Your code] --> B["Sandboxed Web Worker"] B --> C["console.log output"] C --> D["Shown to you"] style B fill:#e0900b,color:#fff
console.log("Hello!");
console.log(6 * 7);
console.log("The answer is", 6 * 7);
console.log and the edit–run–read loop
Your main tool for seeing inside a running program is console.log(...). It takes the value you hand it and prints that value as text, which is how you ask the program 'what do you have right now?'. Print a number, a word, or the result of a calculation, and the engine shows it straight back to you. When you pass several values separated by commas, it joins them with spaces.
The rhythm of learning is the same rhythm working programmers use every day: edit a line of code, run it, then carefully read the output. Did it match what you expected? If yes, you understand that piece; if not, the gap between expectation and reality is precisely the thing to learn from. Change the code and run it again — there is no penalty for running a program as many times as you like.
Safe by design
The Web Worker that runs your code is deliberately locked down. It cannot reach your files, your network, or anything outside its own small box, so the code you write here can take input, do calculations, and print results — but it cannot touch the rest of your computer. If a program contains a mistake, the very worst it can do is fail to print the right answer.
That sandbox is what makes it safe to experiment freely. You can write broken code on purpose just to see what the error message looks like, because the engine's complaints stay fenced in and harmless. Treat errors as information, not as punishment.
flowchart LR E["Edit code"] --> R["Press Run"] R --> X["Real engine runs"] X --> O["Read the output"] O -.->|"gap?<br/>edit again"| E style X fill:#1e7f3d,color:#fff style O fill:#3776ab,color:#fff
const language = "JavaScript";
const year = 1995;
console.log(`${language} first appeared in ${year}.`);
console.log("That is", 2025 - year, "years ago.");
What does this print? console.log shows the value exactly as text.
console.log("Hello, world!");
The value is a string, and console.log prints it as text.
Quotes are not part of the value, so they do not appear in the output.
What does this print? The engine works out the arithmetic first, then prints the result.
console.log(2 + 3);
2 + 3 is computed before printing.
The result is the number 5, printed as the text 5.
Write a function double(n) that returns n multiplied by 2. (A function that returns a value is the building block every later lesson stands on.)
function double(n) {
// return n multiplied by 2
}
Multiply n by 2 with the * operator.
Use the
returnkeyword to send the result back.
function double(n) {
return n * 2;
}
This function is meant to return the greeting text Hello, but it throws ReferenceError: Hello is not defined. The computer read the bare word Hello as a variable name, not as text. Text must be wrapped in quotes — fix it so greet() returns "Hello".
function greet() {
return Hello;
}
Without quotes, a word is treated as the name of a variable.
Wrap the text in double quotes so it is a string value.
function greet() {
return "Hello";
}
What does this print? A template literal splices a value into text, and several arguments to console.log are joined with spaces.
const lang = "JavaScript";
console.log(`I code in ${lang}`);
console.log("It is", "real");
The ${lang} placeholder is replaced with the value of lang.
console.log joins its arguments with single spaces.
Two console.log calls produce two lines of output.
Recap
- JavaScript powers the interactive web and runs in browsers, on servers, and inside apps.
- This course executes your code for real in a sandboxed Web Worker — never simulated or guessed.
console.log(...)prints a value so you can see what your program holds; separate arguments are joined with spaces.- Learning is the edit–run–read loop: change code, run it, then carefully read the true output.
- Text must be quoted; an unquoted word is read as a variable name.
Next you will start storing values in variables and giving them names you can reuse throughout a program.