@joao.labs@joao.labs
Voltar para o blog
Como funciona na Programação?

Como funciona o NOT em programação

Olá Pessoal👋 Vamos entender finalmente o not!

O not as vezes dá um nó na cabeça, até de pessoas com mais experiência👴🏻.

Mas quando entende fica fácil, ou não 🥲, boa sorte 🍀

⛳️ Dica rápida: quando encontrar o !, pense em “não”. Ele inverte um valor booleano!

Boa leitura 🚀

!false it's funny, because it's true.

Antes de entender o Not...

Muitos problemas de programação podem ser resumidos a uma pergunta que só possui duas respostas:

A porta está aberta?

A resposta pode ser:

  • true → sim, está aberta;
  • false → não, está fechada.

Esse tipo de valor é chamado de booleano.

Um booleano representa apenas dois estados possíveis:

let portaAberta = true;

let computadorLigado = false;

Podemos pensar em true e false como sim e não, ligado e desligado, ou permitido e bloqueado.

Booleano é um valor que representa dois estados.

Booleanos no mundo real

Booleanos aparecem o tempo todo em sistemas que usamos diariamente.

Uma aplicação pode precisar saber:

Usuário está logado?       → true / false
Produto está disponível?   → true / false
Pagamento foi aprovado?    → true / false
Porta está aberta?         → true / false
Modo escuro está ativado?  → true / false

Por exemplo, podemos representar se uma conta está ativa:

let contaAtiva = true;

console.log(contaAtiva);

O resultado será true

Isso permite que outras partes do programa usem essa informação para tomar decisões.

Booleanos e condições

Os booleanos ficam ainda mais úteis quando combinados com condições.

Por exemplo:

let portaAberta = true;

if (portaAberta) {
  console.log("Pode entrar.");
}

O if verifica o valor booleano.

Como portaAberta é true, o código dentro do if é executado.

Podemos pensar assim:

Um booleano pode controlar o comportamento do programa.

Como criar booleanos

Podemos declarar diretamente:

let portaAberta = true;

Mas também podemos obter um booleano a partir de uma comparação. Por exemplo:

let idade = 20;

let maiorDeIdade = idade >= 18;

console.log(maiorDeIdade);

O resultado será true

A comparação idade >= 18 produz um booleano.

Isso significa que podemos transformar uma pergunta em uma informação:

idade >= 18
     ↓
   true

Ou:

idade >= 18
     ↓
   false

Finalmente, o que é o NOT?

Agora imagine que temos

let portaAberta = true;

Sabemos que a porta está aberta.

Mas e se quisermos saber o contrário, sem alterar o nome da variável?

A porta não está aberta?

É aí que entra o operador NOT.

No JavaScript, usamos ! para representar NOT.

let portaAberta = true;

console.log(!portaAberta);

O resultado será false.

Isso acontece porque o ! inverte o valor booleano.

true  → false
false → true

Podemos pensar no NOT como

"O contrário disso."

NOT inverte um booleano.

Um exemplo simples

Como no exemplo do vídeo, temos uma variável indicando se uma porta está aberta

let portaAberta = false;

Podemos perguntar...

console.log(!portaAberta);

O resultado será true

A variável diz

portaAberta → false

Mas o ! pergunta

NOT portaAberta → true

Ou seja

A porta não está aberta.

NOT com if

O ! é especialmente útil quando queremos executar alguma coisa caso uma condição não seja verdadeira.

Por exemplo

let portaAberta = false;

if (!portaAberta) {
  console.log("A porta está fechada.");
}

Podemos ler

Se a porta não estiver aberta, mostre "A porta está fechada."

O fluxo é:

Por que não escrever portaAberta == false?

Também poderíamos escrever

let portaAberta = false;

if (portaAberta == false) {
  console.log("A porta está fechada.");
}

Funciona.

Mas o ! deixa a ideia de negação mais direta:

if (!portaAberta) {
  console.log("A porta está fechada.");
}

Estamos dizendo

Se não estiver aberta...

Isso fica especialmente útil quando as condições começam a ficar maiores.

NOT em situações reais

O NOT aparece em vários tipos de sistemas.

Usuário não está logado

let usuarioLogado = false;

if (!usuarioLogado) {
  console.log("Faça login para continuar.");
}

A lógica é

Se o usuário não estiver logado, peça para fazer login.

Produto não está disponível

let produtoDisponivel = false;

if (!produtoDisponivel) {
  console.log("Produto indisponível.");
}

Modo escuro desativado

let modoEscuro = false;

if (!modoEscuro) {
  console.log("Usando tema claro.");
}

Em todos esses exemplos, temos uma variável que representa um estado e usamos o NOT para verificar o estado contrário.

O NOT também pode inverter uma comparação

O ! não precisa ser usado apenas em uma variável.

Podemos aplicá-lo ao resultado de uma comparação

let idade = 15;

if (!(idade >= 18)) {
  console.log("Menor de idade.");
}

Primeiro, o programa verifica

idade >= 18

O resultado é false

Depois, o ! inverte:

!false → true

Por isso o código dentro do if é executado.

👉 Os parênteses ajudam a deixar claro que queremos inverter o resultado da comparação.

Um exemplo completo

Vamos criar uma pequena regra de acesso.

O sistema possui uma informação indicando se a pessoa está bloqueada:

let usuarioBloqueado = false;

if (!usuarioBloqueado) {
  console.log("Acesso permitido.");
}

Como usuarioBloqueado é false, temos:

!false → true

Então o acesso é permitido.

Se mudarmos

let usuarioBloqueado = true;

if (!usuarioBloqueado) {
  console.log("Acesso permitido.");
}

Agora

!true → false

O código dentro do if não será executado.

A lógica pode ser visualizada assim:

⛳️ Uma forma simples de lembrar

Sempre que encontrar !, pense:

Não.

Por exemplo

!portaAberta

Leia como

A porta não está aberta.

!usuarioLogado

Leia como

O usuário não está logado.

!produtoDisponivel

Leia como

O produto não está disponível.

Essa forma de pensar ajuda bastante antes de se preocupar com a sintaxe.

Teste no Laboratório

Experimente alterar os valores de usuarioLogado e portaAberta e observe como o resultado muda:

Copie o código e acesse o laboratório:

let usuarioLogado = false;
let portaAberta = true;

console.log("Usuário logado:", usuarioLogado);
console.log("Usuário não está logado:", !usuarioLogado);

console.log("Porta aberta:", portaAberta);
console.log("Porta não está aberta:", !portaAberta);
Testar no Laboratório JavaScript
João Trintin

João Trintin

Programação Pode Ser Simples