If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

# Teaching guide: Intro to JS - Logic and if statements

This is a teaching guide for the Intro to JS lesson on Logic and if statements.

### What the student will learn

• How to use `if`/`else` statements in their programs to execute different lines of code based on whether certain conditions are true.
• How to use logical operators to evaluate to true/false values - `&&`, `||`, `===`, `!==`, `<`,` >`, `<=`, `>=`.
• How to store booleans in variables, to hold `true`/`false` values.
• How to use the global ProcessingJS boolean variable `mouseIsPressed` to check if the user is pressing the mouse, to help make interactive aspects like buttons.

### Where students struggle

• For many students, this may be their first introduction to logic - reasoning about whether statements are true or false, and making complex expressions using AND and OR to result in truthiness and falsiness. If students are struggling with logic, encourage them to think carefully through each conditional expression, like by writing it down on a sheet of paper and annotating each part of the expression with true or false.
• Students often take time to figure out how to put together multiple `if`/`else` statements in the most logical way - they might forget to use `else` when they want exclusivity, or they may sequence their `if`/`else` conditions in a flow that doesn’t result in what they want. Once again, encourage them to slow down and reason about how they want their program to work. Also, prompt them to think through all the possible values that could flow through the logic. Oftentimes, programmers (new and old!) forget to think about the "edge cases" in their logic.
• Students may struggle with all the new syntax, like incorrectly putting semi-colons after the `if` statement and mistyping the operators incorrectly (e.g. `&` instead of `&&`
• `&` may work, but it’s actually a different, more advanced operator).

An "unplugged" activity is one that you can do with students without needing to use a computer at all. They can help convey concepts in a more visceral way, and they can also be a backup activity for when computers fail.
Code.org offers a Coding with Cards activity (see overview video and lesson plan).

These are questions that you can ask students individually after they've done the lesson, or lead a group discussion around, if everyone's gotten to the same point.
• Where do you use logic in every day life? What variables would you use to program that logic? (Examples for prompts: deciding what to wear outside, deciding what form of transport to use, deciding what to eat)

``strokeWeight(9);mouseMoved = function(){    background(255);    noStroke();    if (mouseX > 200) {        fill(248, 128, 0);    }else{        fill(255, 255, 0);    }    ellipse(mouseX, mouseY, 100, 100);    fill(0);    ellipse(mouseX-15, mouseY-15, 15, 20);    ellipse(mouseX+15, mouseY-15, 15, 20);    stroke(0);    noFill();    if (mouseX > 200) {        arc(mouseX, mouseY+30, 40, 30, 180, 360);    }else{        arc(mouseX, mouseY+10, 50, 20, 0, 180);    }};``