Parte I.III Operadores Lógicos
Tags: javascript, beginners
Published: 2021-08-07 21:35:14

## Operadores Lógicos
O Javascript suporta 3 operadores lógicos, que são aplicadas aos valores booleanos(true e false). 
São: `&&, || ou !` ou AND, OR, ou NOT

- Operador `&&`(AND) o valor é `true`, se ambos os dados fornecidos forem `true`;
- Operador `||`(OR) o valor é `true`, se uns dos dados fornecidos for `true`;
- Operador `!`(NOT), operador de negação, inverte o valor dado a ele - `!true` produz `false` e `!false` produz `true`.

Exemplo: 
- Caso hipotético: Para participar de um curso de programação, você precisa ter 18 anos ou mais e morar em São Paulo.

Nós temos duas condições, você precisa ter 18 anos ou mais `AND` morar em São Paulo, ou seja os dois dados fornecidos precisam serem `true`. Se sim, você pode participar(true), caso contrário não(false). 

```javascript
se idade >= 18 && cidade == "São Paulo"
 "Maravilha, você pode participar do curso"
senão
  "Poxa, infelizmente você não tem todos os critérios"
```


- Para continuarmos, você precisa entender o conceito de `if else` o `se senão` do nosso caso hipotético.

Definição MDN

"A condicional if  é uma estrutura condicional que executa a afirmação, dentro do bloco, se determinada condição for verdadeira. Se for falsa, executa as afirmações dentro de else."

- Sintaxe

```javascript
if (condição) afirmação1 [else afirmação2]
```
Exemplo:
Hoje vai fazer frio?
Se sim, preciso de casaco;
Senão, não preciso de casaco.

```javascript
let tempoHoje = "frio";

if(tempoHoje == "frio") {
  console.log("preciso de casaco");
}else {
  console.log("não preciso de casaco");
}
```

Mas o tempo de São Paulo é louco (rs) e pode fazer frio e calor no mesmo dia, como poderíamos fazer isso utilizando if else?

```javascript
let tempoHoje = "frio&Calor";

if(tempoHoje == "frio") {
  console.log("preciso de casaco");
}else if(tempoHoje == "frio&Calor"){
  console.log("Use roupas leves, mas leve casaco");
}else{
 console.log("Use roupas leves");
}
```

Agora que você já entende como funciona o `if else`, vamos praticar com os operadores lógicos. Mas antes disso, vamos de revisão.

### Operador && (AND) e operador || (OR)

<table>
  <tr>
    <th>a</th>
    <th>b</th>
    <th>a && b </th>
    <th>a || b </th>
  </tr>
  <tr>
    <td>true</td>
    <td>true</td>
    <td>true</td>
    <td>true</td>
  </tr>
  <tr>
    <td>true</td>
    <td>false</td>
    <td>false</td>
    <td>true</td>
  </tr>
  <tr>
    <td>false</td>
    <td>true</td>
    <td>false</td>
    <td>true</td>
  </tr>
  <tr>
    <td>false</td>
    <td>false</td>
    <td>false</td>
    <td>false</td>
  </tr>
</table>

### Operador ! (NOT)

| a | !a | 
|--- |--- |
| true | false | 
| false | true | 

### Exemplos

- Já fizemos alguns exemplos com &&, mas a pratica é essencial.


```javascript
let num1 = 3;
let num2 = 10;

if(num1 >= 15 && num2 >= 4 {
 console.log(true);
else {
 console.log(false)
}
```
No exemplo o retorno será false, já que num1 não é maior ou igual 15. E para ser true, precisamos que as duas informações sejam true

- Agora o mesmo exemplo, mudando o operador && por ||

```javascript
let num1 = 3;
let num2 = 10;

if(num1 >= 15 || num2 >= 4 {
 console.log(true);
else {
 console.log(false)
}
```

Com || (OR), o retorno será true, já que para ser true só precisamos de uma informação verdadeira. 
num1 é não é maior ou igual a 15 (false), mas num2 é maior ou igual a 4 (true), por isso o retorno true.

- Utilizando o operador ! (NOT)
Como já sabemos o operador !, inverte o valor, se for true será false, e se for false será true.

Basicamente isso:
```javascript
let a = 2
let b = 5

if(!a == 2 && b == 5) {
 console.log(true)
else {
 console.log(false)
}
```

O retorno será false.
Vamos analisar, sabemos que `a = 2` e `b = 5`
na condição `!a == 2`, `a == 2` é `true`, mas como a tem o operador de negação `!` -> `!a ` inverte e `true` torna `false`.
Então `!a == 2` é `false`
e `b == 5` é `true`

Só que temos outro operador lógico, o `&&`, como também sabemos para o retorno ser `true`, precisamos que os dois sejam true. E no nosso exemplo só `b` é `true` e `a` é `false`.

### Exercício

Agora que já entendemos como funciona os operadores lógicos e if else, vamos aos exercícios

1 - Pergunte ao usuário a sua idade, certifique de receber apenas números inteiros
2 - Retorne se ele já tem idade para votar ou não
3 - Crie um joguinho com dois participantes, pergunte para ambos "Olá, diga um número qualquer de 0 - 10"
Depois retorne quem informou o maior número, se ambos informaram o mesmo número ou se teve algum que não informou um número válido entre 0 e 10

[Link do Exercício](https://replit.com/@elasUnidas/IniciandoJS-ParteIIII#script.js)