Javascript é uma linguagem intankavel e eu posso provar. Por mais que essa bela linguagem de programação presentei os seus programadores com um belo ecossistema ela tem as suas falhas. Mas boas notícias, pelo menos não é Python.
🌟 Transforme Sua Carreira com Node.js! 🌟 Já pensou em se tornar um mestre em Node.js e ainda economizar uma fortuna? 🎯 Nosso curso, o maior e melhor do Brasil, está com 87% de desconto! Isso mesmo, 87% OFF! 🚀 Por que escolher nosso curso? Aprendizado prático: Vá além da teoria com projetos reais. Top do mercado: Conteúdo atualizado e de alta qualidade. Carreira turbinada: Aumente suas chances no mercado de trabalho. Não deixe essa oportunidade passar! Seja um desenvolvedor Node.js de destaque! 🔗 www.udemy.com/course/formacao-nodejs/?couponCode=9175CD7BAE837CF6AC5A Aproveite enquanto a oferta dura! 💥
Quando você utiliza um operador de = no javascript o que o compilador faz é testar não(!) é > ou < respectivamente .Exemplo:você: 3true compilador: (3>4)! -->(false)!-->true Você: 101)!->(true)! -> false Quando você usa um operador númerico em um tipo de variável primitiva que não pode ser convertida em número o Javascript transforma isso em NaN(Not a Number) e qualquer comparação númerica retorna false: com null0)! -> (false)!-> true
@@bryan13rbx números irracionais não são frações e π não é infinito, ele tem uma representação decimal infinita por causa do nosso sistema numérico ser decimal. E se nós fossemos considerar os dígitos de π, ele seria maior que o conjunto dos números naturais.
@@iantinoSó uma correção, é possível estabelecer uma bijeção entre os números das casas decimais de Pi e os naturais: 3.1415.... 1 -> 1 2 -> 4 3 -> 1 4 -> 5 5 -> 9 . . . O conjunto dos números naturais tem o mesmo "tamanho" (mesma cardinalidade) que a sequência das casas decimais de Pi.
Sinceramente tinha vaga aberta de ganhar mais de 8k pra programar em Java, ninguém queria 😂😂 eu mesmo ainda quero ter meus cabelos, e já tenho poucos, prefiro ganhar meus 5k programando até em calculadora mas não trampo com JS nem no inferno.
@@israelpablocoelho2229 É 1 buraco negro: qto + aparece, + vagas são abertas, + gente a estuda por tais vagas, logo + gente a programa, logo ela aparece +... e o ciclo se repete.
Só cansa se vc estiver fazendo um código porco, essas coisas peculiares do js não fazem diferença se sua estrutura de dados estiver correta e os conceitos de código limpo estiverem sendo seguidos!
Essas coisas são muito específicas e descritas na ECMA. Em resumo, por nao ter tipos, além dos primitivos ele tenta forçar alguma coersao para operações que quando fortemente tipadas gerariam algum erro na operação.
eu acho muito mais seguro gerar um warning na hora de escrever o codigo do que o erro passar despercebido e gerar erros logicos durante o uso, por isso acho var interessante no c#, voce nao precisa se preocupar com qual tipo ta usando, mas quando for usar uma operação o compilador vai se certificar de que a operação pode ser generica usada em uma variavel generico caso contrario voce tem que dar um cast na variavel pra forçar a operação
Sim, ai que está o erro, nunca que null >= 0 deveria retornar true, deveria ser false igual aos outros null > 0 ou null == 0;\ porém na prática retorna true onde não deveria //compara se null é maior que zero, vai retornar false if(null > 0){ window.alert(true); } else { window.alert(false); } //compara se null é igual que zero, vai retornar false if(null === 0){ window.alert(true); } else { window.alert(false); } // o resultado vai retornar true(verdadeiro) if(null >= 0){ window.alert(true); } else { window.alert(false); }
@@JVenonTeam vocês é que não entenderam o que ele está dizendo a última ficou meio dubia da forma que ele falou. if(null >= 0){ } deveria retornar false igual os outros dois, porém retorna como verdadeiro.
Sua pergunta confunde. A operação pergunta se null é maior ou igual a zero. Vc diz q null nunca será maior ou igual a zero que é verdade. Criando uma confusão.
>, 0, não NaN, ex: null >= -1 retorna true, null > 0 retorna false, pq null foi implicitamente convertido pra 0 e zero é igual a zero, mas comparando null == 0 rertorna false pq em uma operação de igualdade obviamente não vai acontecer a conversão de tipos, por isso null continua sendo null, logo null é diferente de 0. isso é um recurso da linguagem não um bug, se aprender a usar ele direito vai facilitar as coisas. resumindo, se seu codigo fica dando pau por causa desse tipo de coisa é pq seu código é um lixo que não usa adequadamente o recurso de tipagem dinamica da liguagem, se vc é iniciante sugiro que não comece aprendendo JS, Python, Perl, Ruby, PHP... Como primeira linguagem, comece por alguma fortimente tipada, consilide os conceitos básicos primeiro, para depois se aventurar em liguagens que oferecem esse tipo de ferramenta 'hipster', além de vc não usar ainda vai reclamar falando que é bug da linguagem.
Null é representado em memória como um numero binario, assim como tudo em computação. Pela regra considere null como ausência de valor. Sempre compare se algo é null ou diferente de null.
@@rodbrowning você tá meio que misturando alguns conceitos ai meu mano. Olha só, em C, o "null" é representado por um ponteiro com valor zero em um endereço de memória convencionado como inválido. Ou seja, a parada é que a representação binária do "null" em C é igual à do *zero*. Já no JavaScript, "null" é uma espécie de palavra-chave que significa um valor nulo ou "vazio" apontando pra um *objeto* que nem existe na memória. Tô explicando isso porque você usou um conceito geral pra explicar uma situação específica, o que você falou não tem nada a ver com o problema que tá rolando no vídeo. No JavaScript, essa coisa toda acontece por causa das conversões automáticas que a linguagem faz, não tem nada a ver com endereços de memória, sacou? Se quiser entender melhor, dá uma olhada na documentação do JavaScript lá no developer.mozilla, tem uma aba chamada "null" no menu, onde explicam isso usando os operadores "==" e "===". Talvez isso te ajude a entender por que "null > 0" dá "true". Abraço! 🤙
@@rodbrowning "Sempre compare se algo é null ou diferente de null." E, cara, por favor, não seja um programador preguiçoso. "null" js é um tipo primitivo "null". Não faça comparações entre variáveis de tipos diferentes ou inicialize variáveis como null/undefined. Eventualmente pode ser necessário criar nulos, mas deixar isso em todo o código por simples preguiça de programar algo descente é sujeira. Se fizer dessa forma vc nunca vai ter esse tipo de erro, não precisaria fazer verificações do tipo null/undefined, e vai evitar outros erros também. +código === -bugs 🤙
@@Matheus-mp1wf Vamo la. quando vc compara null >= 0 o null é convertido para 0 que é igual a 0. Quando compara null == 0 ele não converte null para numero.
@@Matheus-mp1wf Não sou preguiçoso. Na verdade nunca usei nenhuma dessas comparaçoes nos meus codigos. Só disse isso pra acho mais provavel a pessoa ter que comparar se algo é null ou não do que se null é maior, menor, igual, whatever.
Eu acho que deve ser assim! Pense o seguinte! Zero é uma memória Vazia! Null é uma memoria sem o Registro que pode está ocupado ou não! Se tiver ocupado é maior que zero se não tiver é igual. Mas vc não sabe estado de Null, então sempre será >= Só teoria minha,
A primeira analogia que vi, sobre uma garrafa de água vazia é zero, a inexistência da mesma garrafa é nulo, eu consegui entender a lógica e diferença entre esses dois. Outra coisa também é pensar que zero é um valor e null é um status.
Null é usado para indicar que a variável não contém nada, ou seja, o ponteiro da variável não aponta para um endereço da memória. Se a variável aponta para o endereço onde contém o inteiro zero ela não é null. Isso é mais usado em c/cpp que é feito a alocação de memória diretamente.
a relação entre comparison/equality operators e explicit/implicit coersion pode soar um pouco tricky mesmo, mas... "faz sentido" depois de uns anos kkkk
Em C, null, nil e false é igual a zero quantitativamente. Estes representam apenas conceitos diferentes. O problema começa quando operandos são expressões, por exemplo, true é "diferente de false", não é igual a 1. Várias outras situações decorrem disso. Ainda dá para fazer operação quantitativa usando o produto da avaliação. Isto somente porque C é todo selvagem. Em outras linguagens, todo valor tende a ser um tipo de instância de um tipo/classe, o que faz deles objetos, onde são consequentemente não quantitativos.
Por isso que nao se usa null. É muito melhor encapsular os tipos em um Funtor Maybe ou Either e delegar a funcao de lidar com os erros para o Monad. Assim voce da bind nas funçoes dentro do conjunto padrao da aplicação usando operadores como maybe_or, result_or e por ai vai.
(na minha total falta de conhecimento no assunto) eu acho que é null é tipo, não tem valor, por exemplo: "você me ama?" Não dá pra responder 1,2, -6 ou 0. Não tem como representar com números. Se eu responder "nulo" é por que não amo ksksksksks só um exemplo pra tentar explicar minha visão
Aprendam nulo == nada, mas também "nada" não pode ser representado por zero só para evitar confusões nas Variáveis pois significa que a variável não tem nada, e se ela tem 0, ela tem algo
@@stomperhk9107 No caso do operador de igualdade ampla(==), a especificação do JavaScript (ECMAScript) diz que null só é considerado igual a undefined e não a qualquer outro valor, incluindo 0
@@stomperhk9107 pois é, isso é a loucura do JS. O segredo é utilizar sempre a igualdade restrita( "==="). A maioria das regras dos Eslints hoje em dia pedem para utilizar o triplo igual.
@@FernandoAOBorges Sim, eu inconscientemente uso igualdade estrita, indepente se eu tiver certeza que não haverá uma coerção de tipo, eu continuo usando.
é porque null representa que não a Nada, ja zero é um numero que é algo mesmo tendo um valor considerado nulo, ou seja zero não é nulo e sim um numero que não tem valor
No JavaScript, esses resultados aparentemente confusos se devem ao fato de que o operador de comparação null não segue as mesmas regras de coerção de tipos que outros valores numéricos. Vou explicar cada comparação individualmente: null < 0: Quando null é comparado com um número (0), ele é tratado como um valor menor que qualquer número, incluindo 0. Isso acontece devido a uma decisão de design na linguagem, onde null é considerado menor que qualquer número. Portanto, null < 0 resulta em true. null > 0: Da mesma forma, null é considerado maior que qualquer número, incluindo 0. Isso pode parecer contraintuitivo, mas é uma característica do JavaScript. Portanto, null > 0 também resulta em true. null === 0: O operador de igualdade estrita (===) não realiza coerção de tipos. Como null e 0 são de tipos diferentes, a comparação direta entre eles resulta em false. null >= 0: Neste caso, a linguagem JavaScript não segue a regra de coerção de tipos para o operador >=. Em vez disso, null é tratado como um valor maior ou igual a qualquer número, incluindo 0. Isso é uma particularidade do JavaScript e, novamente, pode parecer confuso, mas é como a linguagem foi projetada. Portanto, null >= 0 resulta em true. Esses comportamentos podem parecer estranhos à primeira vista, mas fazem parte das especificações da linguagem JavaScript. É importante estar ciente dessas nuances ao escrever código para evitar resultados inesperados.
Null pode se adaptar a um modelo tipo texto vazio ou numa operação matemática como 0, não afetando como texto e prejudicando a operação. Null é maior ou igual a 0 ou “”
Null é a ausência de qualquer informação e zero é a ausência de qualquer valor numérico, mas o zero pode também representar um valor ou uma informação e o null pode relacionar esse dado tornando o resultado tanto verdadeiro quanto falso. Esse recurso é usado em simuladores para calcular interpolações.
Pelo oque eu entendi lendo os comentários: Vamos supor que tenha uma pessoa A em um lugar aleatório. Imaginamos que ela possa vestir 5 casacos. Cada casaco representa a variável "roupa". A roupa 0 seria a roupa favorita dela. E a roupa 5 uma roupa que ela odeia. Se a pessoa estiver com a roupa 0, ela estaria com a roupa que ela mais gosta. Mas, se ela estiver com a roupa null, significa que ela ta pelada