El segundo no compara valores. primero les hace coerción y después si los compara. No es que JS este mal hecho es que nadie se lee la documentación del lenguaje que lo explica www.ecma-international.org/ecma-262/5.1/#sec-11.9.3
No, lo que pasa es que los string se concatenan con el simbolo +, y al detectar el string "11" de la prioridad a la concatenación y no a la suma por ende el resultado es un string en cambio el simbolo - no representa nada en los string por eso de da prioridad a la operación matemática y lo resta, por lo tanto el resultado es un número.
Buen video 👍 pero ya que mencionas todos estos ejemplos ahora tienes que hacer un video sobre cohersión en JS 🤔 TIP: la próxima vez no uses "font ligatures" ya que algunos nuevos pueden confundir la cantidad de "=" que hay en los ejemplos. Como siempre dice Crockford: "Confusion cause bugs."
2:43 mmm, según tengo entendido esta particularidad tiene que ver más con el hecho de que los tipo Array (y Objeto) son pasados por Referencia y no por Valor, además de que técnicamente estás haciendo declaraciones literales de Array ([ ]), por lo que indirectamente estas comparando lugares distintos de la memoria. Pero igual ignoro si se realiza coerción por debajo de esta particularidad. Por cierto buen video saludos.
Muy bueno el video! Un detalle: por el minuto 3:14 se menciona que el array vacío se convierte al número 0. Esto no es así; en realidad se convierte a string vacío. Para corroborarlo alcanza hacer esta operación: número + array vacío. Ejemplo: 1 + []. Luego por el minuto 4:36 sucede que en realidad en Javascript alcanza con poner el operador + delante de un string para convertirlo a número... siempre y cuando el string contenga un valor numérico; caso contrario, NaN.
Sobre el primer caso, lo que sucede, que quizas falto mencionar en el video, es que javascript cuando se usa la igualdad == y las variables son de distinto tipo, lo que hace es transformar ambas a number Edit: aun asi si, se salteo ese paso al explicarlo
@@SoloElROY Jajjaja simplemente funcione Fue por la comparación de strings, en un inicio se supone que Javascript solo tenía que validar formularios cuando se creo, así que digamos, un formulario vacío ("") debería ser falso, o un formulario numérico 0 debería ser inválido Cosas de los años, Javascript termino siendo el lenguaje más usado, pero tiene que lidiar con todas esas cosas locas que se les ocurrieron en el inicio
El resumen es: 1 - dorey.github.io/JavaScript-Equality-Table/ 2 - Memorizar: == realiza conversión (si es que puede) === no realiza conversión De nada. xD
Curioso vídeo, podrías subir un vídeo explicando las menciones del grado de informática, estaría bien ya que tu ya tienes la experiencia del mundo laboral. Gracias y saludos ^^
En este video es donde vendrán los haters de js a criticarlo aun siendo un lenguaje que ha evolucionado para bien con ecmascript 6 y typescript pero aun asi le tirarán mierda. Luego estos programadores son los que se ofenden porque se dice que php esta muerto o que java morirá pronto. Simplesmente respetar
Todo esto es porque javascript es un engendro, donde cada navegador quería hacer las cosas a su manera, y así fue quedando, y así quedo jajaj igual me gusta bastante.
Hola, excelente video! Quisiera saber si conoces alguna web que se dedique a organizar la explicación de todos estos comportamientos extraños de JS. Me pasa que cuando descubro algo siempre termino en una página como stackoverflow o expertsxchange pero me gustaría leerlos antes de descubrirlos.
(0.3 - 0.1).toFixed(1) === 0.2.toFixed(1) // true No es una repuesta del por qué. Investigando encontré que no es un problema de Javascript es un problema de la representación de las fracciones en binario. Gracias por la pregunta. P.D. 0.30000000000000004.com/ P.S. parseFloat((0.3 - 0.1).toFixed(1)) === 0.2 // true
Sucede que los floats se representan como producto de un entero y una potencia de 2 (ej: 0.75 puede ser 2 elevado a la -2 multiplicado por 3). Luego, hay números que no se pueden representar exactos con este método, como 0.1 y 0.3. En principio no es un problema; Javascript hace un redondeo con el valor más aproximado y finalmente muestra correctamente estos valores. El problema se da cuando, por ejemplo, 0.1 se representa con un número mayor que 0.1, y 0.3 se representa con un número menor que 0.3; la resta termina dando un número menor que 0.2 que al redondearse no obtiene 0.2, sinó 0.19999999999999998. Puede que la explicación no sea del todo correcta a nivel técnico, pero espero se haya entendido la idea al menos.
no entendi jaja.....algo que veo mucho en los profesores de programación e incluso en los vídeos de youtubers dedicados a la programación es que muchos hablan para gente que ya tiene conocimientos , pero no para gente que no sabe nada, por alguna razón no explican de cero ciertos conceptos .
@@BettaTech A mi tanta cafeína me colapsa ya xD ¿Me puedes dar tu opinión sobre una duda que tengo? El caso es que estoy en un grado enfocado a aplicaciones software, en el que damos fundamentos de programación en C, y luego punteros, memoria dinámica, pila, etc. Pero en segundo, hay asignaturas de sistemas operativos y administración de sistemas operativos, y no entiendo para que quiero yo aprender programación de bajo nivel si el grado no va enfocado a ello. También hay algorítmica avanzada, virtualización y cloud, y metodología software (todas estas están como optativa en el otro grado también). Hay otro grado que también toca programación C, orientada a objetos, aplicaciones móvil y web, pero no dan programación de bajo nivel, las otras asignaturas son más enfocadas a animación y proyectos con arduino. ¿De verdad me puede servir de algo el hecho de saber programación de bajo nivel a la hora de desarrollar aplicaciones? No pensaba dedicarme a la programación de sistemas operativos, por lo que no entiendo porque hay esas asignaturas en segundo. Por otra parte, ya que están como optativa, ¿alguna de las otras tres (algorítmica avanzada, virtualización y cloud, y metodología software) puede ser interesante, o se pueden aprender en el trabajo más adelante? Por otro lado, las salidas profesionales de las dos carreras permiten trabajar de desarrollador que al final es lo que busco más o menos. Gracias y perdón por el tocho :D
Odio javascript por el prototipado y por los operadores de comparación tan propensos a generar confusiones, odio la coercion de tipos, en general odio los lenguajes de tipado débil por lo que también odio PHP. Soy mas de lenguajes compilados pero python me parece un muy buen lenguaje. pero mis favoritos son C# y Go.
¿que carrera? En muchas aprendes a programar, y si buscas un lenguaje sencillo de aprender para empezar, usa python, avanza a C, y luego en base a lo que decides ser investiga los lenguajes mas afines a eso.
conociendo esos datos, las cosas si ocurren como uno espera xD
XD creo que el error más común al principio son los === vs ==. Porque el primero valida tipo y valor pero el segundo solo valor.
El segundo no compara valores. primero les hace coerción y después si los compara.
No es que JS este mal hecho es que nadie se lee la documentación del lenguaje que lo explica
www.ecma-international.org/ecma-262/5.1/#sec-11.9.3
@@amstrad05 eso es verdad ni gente que conozco ni yo mismo hemos leido la documentacion de js
Un array vacío es _true_ | un string vacío es _false_
Cuando se usa == con diferentes tipos de datos, Javascript primero los transforma a number y luego los compara
Muy bien aporte .
Faltó el de "11"+1 igual a "111" pero "11"-1 igual "10"
binarios?
@@myenglishisbadpleasecorrec5446 No realmente, porque en sistema binario 11 + 1 = 100
No, lo que pasa es que los string se concatenan con el simbolo +, y al detectar el string "11" de la prioridad a la concatenación y no a la suma por ende el resultado es un string en cambio el simbolo - no representa nada en los string por eso de da prioridad a la operación matemática y lo resta, por lo tanto el resultado es un número.
Eso se llama coerción de tipos
@@EvilBoy912_ type coertion_
No hay vídeo que no sea interesante, que bien explicas todos hasta gente que estamos aprendiendo nos enteramos
Que buen vídeo man, eres un grande, aunque no nos servirá mucho en la practica pero se te agradece mucho este gramito de conocimiento. Saludos
Aunque me encanta JavaScript, debo decir que esto es una locura!!! Gracias por el vídeo, saludos.
Estaba deseoso ver esas raras de javascript
Qué locura!! Soy novata, casi me da algo :-)
Buen video 👍 pero ya que mencionas todos estos ejemplos ahora tienes que hacer un video sobre cohersión en JS 🤔
TIP: la próxima vez no uses "font ligatures" ya que algunos nuevos pueden confundir la cantidad de "=" que hay en los ejemplos. Como siempre dice Crockford: "Confusion cause bugs."
Este puede ser el momento indicado para lanzarme al mundo de Javascript, gracias BettaTech! 👏👍
Excelente vídeo
Visto en 14/04/2020
Javascript, está hecho con las patas, pero es lo que hay. Ojalá en un ECMAscript 138 todas éstas partes raras queden fuera. Buen vídeo, saludos.
¿Que deminioz haces aquí Fred?
Tengo 2 preguntas:
Q lenguajes recomiendas para iniciar en la carrera?
Cual lenguaje consideras mas complejo o very hard to learn?
2:43 mmm, según tengo entendido esta particularidad tiene que ver más con el hecho de que los tipo Array (y Objeto) son pasados por Referencia y no por Valor, además de que técnicamente estás haciendo declaraciones literales de Array ([ ]), por lo que indirectamente estas comparando lugares distintos de la memoria. Pero igual ignoro si se realiza coerción por debajo de esta particularidad. Por cierto buen video saludos.
Pensé que eras vsauce!
Hola... saludos desde República Dominicana... quisiera saber donde compraste la mascota de github... la “figurita de acción” que está de fondo
@BettaTech haz un vídeo explicando 0'1 + 0'2 en js.
Lo apuntooooooooooooooooo4! (que malo, matame xd)
No es un problema de javaScript en esta dirección lo puedes ver:
0.30000000000000004.com/
Madre mía, nunca había visto javascript y me has hecho no querer verlo nunca más 🤣
Jose Moreno Fuera de estos líos, js es muy bueno
me sigue pareciendo mejor que python
amo tu lampara
Muy bueno el video! Un detalle: por el minuto 3:14 se menciona que el array vacío se convierte al número 0. Esto no es así; en realidad se convierte a string vacío. Para corroborarlo alcanza hacer esta operación: número + array vacío. Ejemplo: 1 + [].
Luego por el minuto 4:36 sucede que en realidad en Javascript alcanza con poner el operador + delante de un string para convertirlo a número... siempre y cuando el string contenga un valor numérico; caso contrario, NaN.
Sobre el primer caso, lo que sucede, que quizas falto mencionar en el video, es que javascript cuando se usa la igualdad == y las variables son de distinto tipo, lo que hace es transformar ambas a number
Edit: aun asi si, se salteo ese paso al explicarlo
Me gusta tu wallpaper
Como haces para tomarle captures al codigo?
Plugin del editor de texto
Tío, pareces un judío ultra ortodoxo... 😂😂😂
Se me volo la cabeza de tanto conflicto
Buen video, aunque esperaba el porque se habian tomado esas deciciones
vere que puedo investigar xD
No soy programador... Pero supongo que para mantener el eventLoop en constante movimiento y hacer que "simplemente funcione"... No lo sé
@@SoloElROY Jajjaja simplemente funcione
Fue por la comparación de strings, en un inicio se supone que Javascript solo tenía que validar formularios cuando se creo, así que digamos, un formulario vacío ("") debería ser falso, o un formulario numérico 0 debería ser inválido
Cosas de los años, Javascript termino siendo el lenguaje más usado, pero tiene que lidiar con todas esas cosas locas que se les ocurrieron en el inicio
El resumen es:
1 - dorey.github.io/JavaScript-Equality-Table/
2 - Memorizar:
== realiza conversión (si es que puede)
=== no realiza conversión
De nada. xD
Curioso vídeo, podrías subir un vídeo explicando las menciones del grado de informática, estaría bien ya que tu ya tienes la experiencia del mundo laboral. Gracias y saludos ^^
Aguante ruby y la ley de la mínima sorpresa. Todos los lenguajes deberían guiarse por esa lógica.
Estou triste por não entender espanhol, o assunto está super interessante
Hey, Vsauce! Michael here
En este video es donde vendrán los haters de js a criticarlo aun siendo un lenguaje que ha evolucionado para bien con ecmascript 6 y typescript pero aun asi le tirarán mierda. Luego estos programadores son los que se ofenden porque se dice que php esta muerto o que java morirá pronto. Simplesmente respetar
Todo esto es porque javascript es un engendro, donde cada navegador quería hacer las cosas a su manera, y así fue quedando, y así quedo jajaj igual me gusta bastante.
Que lenguaje tan hermoso... Saludos
Excelente video 👌
Gracias!!! :D
Son un crack!
Hola, excelente video! Quisiera saber si conoces alguna web que se dedique a organizar la explicación de todos estos comportamientos extraños de JS. Me pasa que cuando descubro algo siempre termino en una página como stackoverflow o expertsxchange pero me gustaría leerlos antes de descubrirlos.
Muy bueno
Conceptos de YDKJS explicados en 7 mins jajajaja.
Me puedes explicar por que 0.3 - 0.1 no es 0.2 ☹️
(0.3 - 0.1).toFixed(1) === 0.2.toFixed(1) // true
No es una repuesta del por qué.
Investigando encontré que no es un problema de Javascript es un problema de la representación de las fracciones en binario.
Gracias por la pregunta.
P.D. 0.30000000000000004.com/
P.S. parseFloat((0.3 - 0.1).toFixed(1)) === 0.2 // true
Sucede que los floats se representan como producto de un entero y una potencia de 2 (ej: 0.75 puede ser 2 elevado a la -2 multiplicado por 3). Luego, hay números que no se pueden representar exactos con este método, como 0.1 y 0.3. En principio no es un problema; Javascript hace un redondeo con el valor más aproximado y finalmente muestra correctamente estos valores. El problema se da cuando, por ejemplo, 0.1 se representa con un número mayor que 0.1, y 0.3 se representa con un número menor que 0.3; la resta termina dando un número menor que 0.2 que al redondearse no obtiene 0.2, sinó 0.19999999999999998.
Puede que la explicación no sea del todo correcta a nivel técnico, pero espero se haya entendido la idea al menos.
modernweb.com/what-every-javascript-developer-should-know-about-floating-points/
Hola ¿adscripción?
¿Si, que necesitaba?
Llamo para cambiar de carrera
dios mio tube que repetir el video unas 20 veces para mas o menos entender el ultimo ejemplo xd y todavia creo que no lo entiendo xd
HEEY VSAUCE!
jajajja es igual!!
Hey! Michael here...
no entendi jaja.....algo que veo mucho en los profesores de programación e incluso en los vídeos de youtubers dedicados a la programación es que muchos hablan para gente que ya tiene conocimientos , pero no para gente que no sabe nada, por alguna razón no explican de cero ciertos conceptos .
cuando regalaras un libro?
Buen video, gracias a Dios trabajo en BackEnd y no tengo que tocar mucho este pseudo-lenguaje. Aunque peor sería trabajar en Php...
Yo lo uso en backend.
P.D: 0.30000000000000004.com/
@@hrivera4201 amigo me da miedo la direccion de ese sitio web :0
Deberias probar nodejs o django. Son el futuro muchos proyectos se adaptarán a esos lenguajes
@Julio Caesar Java más que nada, Jsf y Spring y también he trabajado y mantengo unos proyectos en asp.net
@@gelintonx apoyo Django, me gusta ese framework la verdad
Si tiene claro cuales son tipo de datos primitivos y que es un objeto, no te vas a perder en JavaScript.
Mi zona de confort es C#. Estudié JS en 3 horas, pero me adapté al mismo con total fluidez en 4 meses.
De donde sacas la energia para programar, dame un 20% porfa :(
Los trabajos de la uni no se entregaran solos jajaja
Mucho cafe ☕ xD
@@BettaTech A mi tanta cafeína me colapsa ya xD
¿Me puedes dar tu opinión sobre una duda que tengo?
El caso es que estoy en un grado enfocado a aplicaciones software, en el que damos fundamentos de programación en C, y luego punteros, memoria dinámica, pila, etc.
Pero en segundo, hay asignaturas de sistemas operativos y administración de sistemas operativos, y no entiendo para que quiero yo aprender programación de bajo nivel si el grado no va enfocado a ello. También hay algorítmica avanzada, virtualización y cloud, y metodología software (todas estas están como optativa en el otro grado también).
Hay otro grado que también toca programación C, orientada a objetos, aplicaciones móvil y web, pero no dan programación de bajo nivel, las otras asignaturas son más enfocadas a animación y proyectos con arduino.
¿De verdad me puede servir de algo el hecho de saber programación de bajo nivel a la hora de desarrollar aplicaciones?
No pensaba dedicarme a la programación de sistemas operativos, por lo que no entiendo porque hay esas asignaturas en segundo.
Por otra parte, ya que están como optativa, ¿alguna de las otras tres (algorítmica avanzada, virtualización y cloud, y metodología software) puede ser interesante, o se pueden aprender en el trabajo más adelante?
Por otro lado, las salidas profesionales de las dos carreras permiten trabajar de desarrollador que al final es lo que busco más o menos.
Gracias y perdón por el tocho :D
Que dolor
Esto es lo que pasa cuando creas un lenguaje en 10 dias.
Veo el video y entiendo la miniatura xd
Interesante, yo añadiría 0.2 + 0.1
estaría bueno, pero ese no es un problema exclusivo de javascript
Lo de true y false me dejo virolo, help
ajajaj quw gracioso todo, malvado JS
lenguajes comunes viendo a Javascript... WTF??!! jajajajaja
Estaba muy confundido justo con lo que explica.
que dolor de huevo es javascript , es el unico lenguaje que tiene los errores que menos ayudan a uno, simplemente te dice: "algo anda mal"
🙈
Te amodio JS
JS es lo mejor y lo peor que le ha pasado a la informática, según a quien preguntes 😂😂
Mientras TypeScript detrás recogiendo esos platos rotos xd
Entiendo que todo esto pasa por ser un lenguaje poco tipado. Que traga con todo, vamos.
Mmm... Javascript es raro.
www.boards.4chan.org/wg/ cambiate ese fondo que esta quemado :( Yo hace años lo tenía puesto pero ahora verlo en todas partes me quema x_X
Wow so edgy
¿Alguna razón especial para haber construido JavaScript así? XD
Trolear js es un lenguaje para trolear
Odio javascript por el prototipado y por los operadores de comparación tan propensos a generar confusiones, odio la coercion de tipos, en general odio los lenguajes de tipado débil por lo que también odio PHP. Soy mas de lenguajes compilados pero python me parece un muy buen lenguaje. pero mis favoritos son C# y Go.
Buen video! Dejo un clásico por aqui
www.destroyallsoftware.com/talks/wat
Totolmente de acuerdo contigo, maestro... no, la verdad no entendí nada.
ala verguines
pole
Joer que rápido JAJAJA
@@BettaTech jejeje soy un rayo. Es un tema que me interesa mucho.
console.log("subpole");
yo prefiero c
Mi nombre en JS xD: repl.it/repls/MundaneRepentantKeygen
baNaNa xDD
🍌
Te lavas la barba?
A Javascript lo defino como: "Un pésimo lenguaje (mal diseñado) con una inmensa responsabilidad (La WEB)".
Pésimo será usted.
no saben usar == y === XD
Quiero vomitar
Tengo 2 preguntas:
Q lenguajes recomiendas para iniciar en la carrera?
Cual lenguaje consideras mas complejo o very hard to learn?
¿que carrera? En muchas aprendes a programar, y si buscas un lenguaje sencillo de aprender para empezar, usa python, avanza a C, y luego en base a lo que decides ser investiga los lenguajes mas afines a eso.
js, no tienes que instalar nada puedes empezar a programar en el navegador y luego java para pillar conceptos de POO