# Conditionals

### `if`

The **if statement** executes some code if a specified condition is true.

```javascript
if (true) {
  console.log("this will be printed");
}

if (false) {
  console.log("this will not be printed");
}

var x = 4;
//var x = 5;
if (x === 5) {
  console.log("x equals 5");
}
```

### `if/else`

When we want code that executes when the **if statement** condition is false, we can use the **else** keyword as a shorthand.

```javascript
var isTasty;
var food = "vegetables";
//var food = "pizza";
if (food === "pizza") {
  isTasty = true;
} else {
  isTasty = false;
}
console.log("Is the food tasty?", isTasty);
```

### `if/else if/else`

```javascript
var course = "wdi";
if (course === "uxdi") {
  console.log("Hello, User Experience Designer!");
} else if (course === "fewd") {
  console.log("Hello, Front-End Developer");
} else if (course === "wdi") {
  console.log("Hello, Immersed Developer")
} else {
  console.log("Who are you?")
}
```

### `switch`

Sometimes, numerous **if/else** statements make code hard to read. There's an alternative called a **switch statement**. It accepts a value and compares the value against various **cases**.

Each case block must end with **break;**, otherwise the block will fall through to the next block. If none of the cases match the value, you can also implement a **default** case.

```javascript
var grade = "B";
switch(grade) {
  case "A":
    console.log('You got an A! Great job!');
    break;
  case "B":
    console.log('You got an B! Good job!');
    break;
  default:
    console.log('Try again next time!');
    break;
}
```

### Exercise:

Rewrite the `if/else if/else` example above using a switch statement.

## Switch statements can evaluate inequalities too!

```javascript
var grade = "75";
switch(true) {
  case (90<=grade && grade<=100):
    console.log('You got an A! Great job!');
    break;
  case (80<=grade && grade<90):
    console.log('You got an B! Good job!');
    break;
  case (70<=grade && grade<80):
    console.log('You got an C! Fair job!');
    break;
  default:
    console.log('Try again next time!');
    break;
}
```

## Truthy vs. Falsey

What happens if we put something other than a Boolean as the conditional in an if statement? Turns out, any value can be evaluated as true or false.

Most values are truthy. In fact, there are only 6 falsey values in Javascript - can you guess them all?

```javascript
var person = null;
if (person) {
  console.log("this will not be printed");
} else {
  console.log("this will be printed");
}
var num = 0;
if (num) {
  console.log("this will not be printed");
} else {
  console.log("this will be printed");
}
var num = 5;
if (num) {
  console.log("this will be printed");
}
```

More on this topic: <https://developer.mozilla.org/en-US/docs/Glossary/Truthy>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://romebell.gitbook.io/seirfx-621/javascript/js-control-flow/03conditionals.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
