1
00:00:01,490 --> 00:00:02,840
Ahora, aún más moderno

2
00:00:02,840 --> 00:00:04,833
que el operador coalescente nulo

3
00:00:04,833 --> 00:00:06,510
que acabamos de hablar

4
00:00:06,510 --> 00:00:10,280
son tres nuevos operadores de asignación lógica

5
00:00:10,280 --> 00:00:13,320
que se introdujeron en ES 2021.

6
00:00:13,320 --> 00:00:15,203
Así que veamos cómo funcionan.

7
00:00:16,360 --> 00:00:18,950
Y para hacerlo de manera efectiva,

8
00:00:18,950 --> 00:00:23,513
Comencemos rápidamente creando dos nuevos objetos de restaurante.

9
00:00:24,760 --> 00:00:26,790
Entonces llamaré al restaurante uno.

10
00:00:26,790 --> 00:00:28,420
y restaurante dos.

11
00:00:28,420 --> 00:00:30,871
Y son extremadamente simples.

12
00:00:30,871 --> 00:00:32,660
solo tienen un nombre

13
00:00:33,600 --> 00:00:35,433
y entonces este tiene una propiedad,

14
00:00:36,920 --> 00:00:38,400
número de invitados,

15
00:00:38,400 --> 00:00:40,303
y pongámoslo en 20 aquí.

16
00:00:42,180 --> 00:00:46,010
Y luego también habrá un restaurante dos.

17
00:00:46,010 --> 00:00:48,763
Y, de hecho, dupliquemos este aquí.

18
00:00:50,490 --> 00:00:51,683
Restaurante dos.

19
00:00:54,140 --> 00:00:56,693
Llama a esto en La Piazza.

20
00:00:57,860 --> 00:00:58,693
Y este en realidad

21
00:00:58,693 --> 00:01:01,630
no tiene la propiedad número de invitados

22
00:01:01,630 --> 00:01:03,483
pero tiene dueño.

23
00:01:05,600 --> 00:01:10,600
Así que Giovanni Rossi, o lo que sea.

24
00:01:14,410 --> 00:01:17,490
Bien, y lo primero que queremos hacer ahora

25
00:01:17,490 --> 00:01:20,220
es establecer un número predeterminado de invitados

26
00:01:20,220 --> 00:01:21,920
para todos los objetos del restaurante

27
00:01:21,920 --> 00:01:24,230
que no tienen esa propiedad.

28
00:01:24,230 --> 00:01:27,240
Entonces, en este caso, es solo este restaurante aquí.

29
00:01:27,240 --> 00:01:29,290
pero vamos a fingir que los tenemos

30
00:01:29,290 --> 00:01:33,030
para que obtuviéramos estos restaurantes de algún tipo de API,

31
00:01:33,030 --> 00:01:36,070
y ahora queremos aplicar algo a todos ellos.

32
00:01:36,070 --> 00:01:37,530
Entonces, en este caso,

33
00:01:37,530 --> 00:01:40,650
básicamente sumando el número de huéspedes propiedad

34
00:01:40,650 --> 00:01:43,270
a los objetos que no los tienen.

35
00:01:43,270 --> 00:01:46,650
Y comencemos usando la herramienta que ya conocemos

36
00:01:46,650 --> 00:01:47,830
para hacer esto.

37
00:01:47,830 --> 00:01:50,370
Y ese es el operador or.

38
00:01:50,370 --> 00:01:52,850
Así que ya sabemos cómo podemos hacer esto usando

39
00:01:52,850 --> 00:01:54,853
el operador or, ¿verdad?

40
00:01:56,130 --> 00:01:57,470
Así que digamos resto2

41
00:02:03,827 --> 00:02:07,743
.número de invitados debe ser igual a rest1.numGuests

42
00:02:11,000 --> 00:02:13,653
o 10.

43
00:02:14,900 --> 00:02:17,140
Así que recordemos rápidamente que esto funciona

44
00:02:17,140 --> 00:02:19,830
debido a un cortocircuito.

45
00:02:19,830 --> 00:02:21,210
Así que en el operador or,

46
00:02:21,210 --> 00:02:24,310
si el primer valor es verdadero,

47
00:02:24,310 --> 00:02:27,070
así que este de aquí, luego ese primer valor

48
00:02:27,070 --> 00:02:30,330
inmediatamente será devuelto y el segundo valor

49
00:02:30,330 --> 00:02:32,350
ni siquiera será evaluado.

50
00:02:32,350 --> 00:02:33,990
Así que ese es este de aquí.

51
00:02:33,990 --> 00:02:35,633
Y así, al hacer esto,

52
00:02:36,470 --> 00:02:38,467
y aquí debería haber numGuests,

53
00:02:40,160 --> 00:02:41,970
así que de nuevo al hacer esto,

54
00:02:41,970 --> 00:02:44,380
aquí estamos devolviendo el número de invitados

55
00:02:44,380 --> 00:02:47,510
si existe, entonces si no es falso,

56
00:02:47,510 --> 00:02:50,293
y en caso contrario se va a devolver el 10.

57
00:02:51,640 --> 00:02:52,473
¿Bueno?

58
00:02:52,473 --> 00:02:54,883
Y de hecho, dupliquemos esta línea aquí.

59
00:02:55,950 --> 00:02:57,410
Pero primero, debería arreglarlo.

60
00:02:57,410 --> 00:03:00,760
porque, por supuesto, el número de invitados en el restaurante dos

61
00:03:00,760 --> 00:03:03,110
debe establecerse en función del número

62
00:03:03,110 --> 00:03:05,893
de comensales que están en restaurante dos o no.

63
00:03:06,890 --> 00:03:09,610
Pero de todos modos, duplicando esto ahora

64
00:03:09,610 --> 00:03:12,650
y luego hacerlo para ambos restaurantes aquí

65
00:03:12,650 --> 00:03:14,100
para que podamos ver el resultado

66
00:03:18,140 --> 00:03:20,563
aquí para ambos objetos.

67
00:03:22,120 --> 00:03:23,173
Entonces, veamos.

68
00:03:24,020 --> 00:03:26,260
Y aquí vamos.

69
00:03:26,260 --> 00:03:29,060
Así que el segundo aquí no tenía un número de invitados.

70
00:03:29,060 --> 00:03:31,760
y ahora numGuests es 10.

71
00:03:31,760 --> 00:03:34,803
Y de nuevo, eso se debe a un cortocircuito.

72
00:03:35,760 --> 00:03:37,940
Así que esto aquí volvió indefinido

73
00:03:37,940 --> 00:03:40,200
y entonces el segundo fue devuelto,

74
00:03:40,200 --> 00:03:42,530
mientras aquí en este,

75
00:03:42,530 --> 00:03:44,080
este valor era 20

76
00:03:44,080 --> 00:03:47,720
y así es este 20 que inmediatamente fue devuelto.

77
00:03:47,720 --> 00:03:50,050
Así que nada nuevo hasta este punto.

78
00:03:50,050 --> 00:03:51,630
pero ahora déjame presentarte

79
00:03:51,630 --> 00:03:54,600
el primer operador de asignación lógica,

80
00:03:54,600 --> 00:03:56,853
que es el operador de asignación o .

81
00:03:58,950 --> 00:04:00,380
Así que con ese operador,

82
00:04:00,380 --> 00:04:03,270
vamos a ser capaces de escribir lo mismo básicamente

83
00:04:03,270 --> 00:04:04,793
de una manera más concisa.

84
00:04:05,730 --> 00:04:06,913
Entonces rest1.numGuests,

85
00:04:10,610 --> 00:04:13,530
y ahora en vez de repetir lo mismo otra vez

86
00:04:13,530 --> 00:04:14,800
como lo hice aquí,

87
00:04:14,800 --> 00:04:19,033
Puedo simplemente escribir o igual y luego 10.

88
00:04:20,200 --> 00:04:21,790
Y eso es.

89
00:04:21,790 --> 00:04:24,910
Así que esto aquí es exactamente igual que este

90
00:04:24,910 --> 00:04:26,623
pero de una manera más concisa.

91
00:04:27,930 --> 00:04:29,550
¿Bueno?

92
00:04:29,550 --> 00:04:31,400
Hagamos lo mismo con el restaurante dos.

93
00:04:33,220 --> 00:04:35,263
Y si comentamos estos dos ahora,

94
00:04:36,860 --> 00:04:40,530
entonces como ves el resultado es exactamente el mismo.

95
00:04:40,530 --> 00:04:41,890
Excelente.

96
00:04:41,890 --> 00:04:46,843
Así que escribamos aquí el operador de asignación OR.

97
00:04:49,090 --> 00:04:51,940
Y básicamente, este operador asigna una variable

98
00:04:51,940 --> 00:04:56,090
a una variable si esa variable actualmente es falsa.

99
00:04:56,090 --> 00:04:58,410
Así que de nuevo, exactamente lo que está pasando aquí

100
00:04:58,410 --> 00:05:01,120
porque esta variable actualmente es falsa

101
00:05:01,120 --> 00:05:04,313
y así se le asignará el valor de 10.

102
00:05:05,760 --> 00:05:08,240
Genial, así que funciona muy bien,

103
00:05:08,240 --> 00:05:10,150
excepto en una situación.

104
00:05:10,150 --> 00:05:12,690
Que en realidad ya nos encontramos antes

105
00:05:12,690 --> 00:05:14,253
en la conferencia anterior.

106
00:05:16,060 --> 00:05:19,870
Así que dupliquemos esto aquí.

107
00:05:19,870 --> 00:05:21,210
Comenta este.

108
00:05:21,210 --> 00:05:24,220
Y ahora configurando el número de invitados a cero,

109
00:05:24,220 --> 00:05:27,560
que es un número perfectamente razonable, ¿verdad?

110
00:05:27,560 --> 00:05:31,053
Pero mire lo que sucede si luego ejecuto este código nuevamente.

111
00:05:32,480 --> 00:05:33,570
Como podemos ver aquí,

112
00:05:33,570 --> 00:05:35,110
es volver a tener 10,

113
00:05:35,110 --> 00:05:37,383
aunque lo ponemos a cero aquí.

114
00:05:38,240 --> 00:05:40,410
Entonces, ¿puedes adivinar por qué está sucediendo eso?

115
00:05:40,410 --> 00:05:42,660
en base a lo que aprendimos en la última lección?

116
00:05:43,630 --> 00:05:46,780
Bueno, cero es en realidad un valor falso,

117
00:05:46,780 --> 00:05:48,970
y entonces este operador de asignación OR

118
00:05:48,970 --> 00:05:51,010
en realidad está funcionando bien.

119
00:05:51,010 --> 00:05:54,140
Así que esto aquí ahora mismo es falso

120
00:05:54,140 --> 00:05:58,060
y por lo tanto, entonces se le asignará este valor de 10,

121
00:05:58,060 --> 00:06:00,800
que es exactamente lo que hace este operador.

122
00:06:00,800 --> 00:06:04,210
De nuevo, el operador de asignación OR lógico

123
00:06:04,210 --> 00:06:06,680
asignará un valor a una variable

124
00:06:06,680 --> 00:06:10,013
si esa variable exacta es falsa en este momento.

125
00:06:12,060 --> 00:06:15,823
Sin embargo, afortunadamente, tenemos una buena manera de resolver esto.

126
00:06:17,670 --> 00:06:21,100
Así que copiemos todo esto, póngalo aquí,

127
00:06:21,100 --> 00:06:22,950
comenta estos dos

128
00:06:22,950 --> 00:06:24,980
porque en realidad no funcionan.

129
00:06:24,980 --> 00:06:27,660
Así que aquí también tenemos

130
00:06:27,660 --> 00:06:30,433
el operador de asignación lógico nulo.

131
00:06:31,440 --> 00:06:32,890
suena un poco complicado

132
00:06:32,890 --> 00:06:34,200
pero en realidad todo es

133
00:06:34,200 --> 00:06:38,400
es cambiar el o por el operador coalescente nulo.

134
00:06:38,400 --> 00:06:41,403
Así que vamos a escribir eso también aquí.

135
00:06:46,770 --> 00:06:48,970
Operador de asignación nula.

136
00:06:48,970 --> 00:06:50,310
Así que si lo guardo ahora,

137
00:06:50,310 --> 00:06:53,120
entonces vuelve a cero aquí.

138
00:06:53,120 --> 00:06:56,700
Y ese es exactamente el resultado correcto aquí.

139
00:06:56,700 --> 00:06:58,290
Solo recordemos aquí

140
00:06:58,290 --> 00:07:00,680
eso nulo básicamente significa nulo

141
00:07:02,410 --> 00:07:06,100
o indefinido, y justo aquí en el restaurante dos,

142
00:07:06,100 --> 00:07:08,450
el número de invitados es indefinido

143
00:07:08,450 --> 00:07:11,930
y por lo tanto, entonces los 10 serán asignados

144
00:07:11,930 --> 00:07:13,720
a esa variable.

145
00:07:13,720 --> 00:07:15,740
Y así, en pocas palabras,

146
00:07:15,740 --> 00:07:17,500
el operador de asignación nula

147
00:07:17,500 --> 00:07:20,260
asignará un valor a una variable

148
00:07:20,260 --> 00:07:24,530
si esa variable exacta es actualmente nula.

149
00:07:24,530 --> 00:07:27,973
De nuevo, ese es el caso en el restaurante número dos.

150
00:07:28,950 --> 00:07:30,070
Bueno.

151
00:07:30,070 --> 00:07:32,030
Y como probablemente puedas adivinar,

152
00:07:32,030 --> 00:07:36,020
también tenemos el operador lógico y de asignación.

153
00:07:36,020 --> 00:07:37,730
Y para aprender sobre eso,

154
00:07:37,730 --> 00:07:41,050
digamos que queremos anonimizar los nombres

155
00:07:41,050 --> 00:07:43,330
de los dueños del restaurante.

156
00:07:43,330 --> 00:07:46,300
Entonces, cuando actualmente hay un propietario,

157
00:07:46,300 --> 00:07:47,940
como aquí en este objeto,

158
00:07:47,940 --> 00:07:50,760
básicamente queremos reemplazar esta cadena aquí

159
00:07:50,760 --> 00:07:53,130
con la cadena anónimo.

160
00:07:53,130 --> 00:07:56,380
Entonces, ¿cómo podríamos hacer eso de nuevo usando las herramientas

161
00:07:56,380 --> 00:07:57,583
que ya sabemos?

162
00:07:58,870 --> 00:08:03,480
Bueno, digamos rest2.propietario

163
00:08:04,730 --> 00:08:08,313
y ahora usemos por ahora solo un operador and.

164
00:08:10,000 --> 00:08:14,340
Entonces podemos decir rest2.propietario

165
00:08:16,490 --> 00:08:20,193
y luego vamos a escribirlo así.

166
00:08:22,700 --> 00:08:25,180
Anónimo, ¿de acuerdo?

167
00:08:25,180 --> 00:08:27,300
Veamos por ahora si esto funcionó.

168
00:08:27,300 --> 00:08:29,500
Y de hecho, lo hizo.

169
00:08:29,500 --> 00:08:31,910
Entonces reemplazó la cuerda que teníamos aquí antes

170
00:08:31,910 --> 00:08:33,640
con este anónimo.

171
00:08:33,640 --> 00:08:36,750
Y entonces recordemos por qué esto funciona.

172
00:08:36,750 --> 00:08:40,610
Bueno, una vez más, se debe a un cortocircuito.

173
00:08:40,610 --> 00:08:43,550
Y en el caso particular del operador and,

174
00:08:43,550 --> 00:08:46,860
se cortocircuita cuando el primer valor es falso,

175
00:08:46,860 --> 00:08:50,660
y luego devuelve inmediatamente ese valor falso.

176
00:08:50,660 --> 00:08:53,460
Entonces, en este caso, eso no es lo que sucede.

177
00:08:53,460 --> 00:08:55,720
Así que esto es verdad en este momento

178
00:08:55,720 --> 00:08:57,440
y por lo tanto, el segundo valor

179
00:08:57,440 --> 00:09:00,293
luego será evaluado y devuelto.

180
00:09:01,260 --> 00:09:02,940
Así que si duplicamos esto,

181
00:09:05,780 --> 00:09:06,813
como esto,

182
00:09:07,730 --> 00:09:09,870
entonces ves que ahora se está configurando

183
00:09:09,870 --> 00:09:13,510
a indefinido porque bueno,

184
00:09:13,510 --> 00:09:16,660
el dueño del restaurante1 no existe.

185
00:09:16,660 --> 00:09:18,310
Entonces esa propiedad no está aquí.

186
00:09:18,310 --> 00:09:20,450
y entonces este valor es indefinido.

187
00:09:20,450 --> 00:09:22,950
Y dado que el operador y los cortocircuitos

188
00:09:22,950 --> 00:09:25,780
cuando el primer valor es falso,

189
00:09:25,780 --> 00:09:27,520
bueno ese es el valor

190
00:09:27,520 --> 00:09:29,023
que se devuelve inmediatamente.

191
00:09:30,400 --> 00:09:33,670
Entonces, de nuevo, ya aprendimos sobre eso un poco antes.

192
00:09:33,670 --> 00:09:34,700
en la sección,

193
00:09:34,700 --> 00:09:36,910
y por eso no voy a profundizar mucho

194
00:09:36,910 --> 00:09:39,870
en los detalles aquí una vez más.

195
00:09:39,870 --> 00:09:41,700
Lo que voy a entrar en detalle

196
00:09:41,700 --> 00:09:45,860
es que ahora podemos reemplazar una vez más

197
00:09:45,860 --> 00:09:48,650
esta variable duplicada aquí.

198
00:09:48,650 --> 00:09:52,583
Entonces, básicamente, reemplazándolo con el operador de asignación y.

199
00:09:53,960 --> 00:09:56,200
Entonces, para hacer eso, puedo escribir rest1

200
00:09:57,688 --> 00:10:02,688
&& igual, y luego copiemos esta cadena.

201
00:10:05,310 --> 00:10:08,383
Muy bien, y copiándolo para el restaurante dos.

202
00:10:09,782 --> 00:10:12,470
Y luego puedo comentar estos dos

203
00:10:13,340 --> 00:10:15,570
y solo por el bien de la integridad,

204
00:10:15,570 --> 00:10:17,513
también lo escribimos aquí.

205
00:10:20,608 --> 00:10:22,370
Ahora, y obtenemos un error aquí

206
00:10:22,370 --> 00:10:23,203
y eso es, por supuesto,

207
00:10:23,203 --> 00:10:26,300
porque se me olvida el numero de invitados,

208
00:10:26,300 --> 00:10:30,083
y en realidad, es .propietario, por supuesto.

209
00:10:31,460 --> 00:10:33,090
Entonces .propietario.

210
00:10:33,090 --> 00:10:35,710
A ver, y ahí vamos.

211
00:10:35,710 --> 00:10:38,890
Entonces, el propietario ha sido reemplazado por anónimo en este caso,

212
00:10:38,890 --> 00:10:41,900
y aquí en el caso del primer restaurante,

213
00:10:41,900 --> 00:10:43,848
el resultado es aún mejor ahora

214
00:10:43,848 --> 00:10:45,130
que lo que teníamos antes

215
00:10:45,130 --> 00:10:47,320
porque con este código aquí,

216
00:10:47,320 --> 00:10:50,530
en realidad teníamos el propietario configurado como indefinido,

217
00:10:50,530 --> 00:10:52,650
que no era realmente lo que queríamos.

218
00:10:52,650 --> 00:10:54,540
Ahora simplemente no está aquí.

219
00:10:54,540 --> 00:10:57,080
Y básicamente, cuál es la lógica

220
00:10:57,080 --> 00:10:59,070
y el operador de asignación hace

221
00:10:59,070 --> 00:11:01,720
es asignar un valor a una variable

222
00:11:01,720 --> 00:11:03,733
si actualmente es veraz.

223
00:11:04,590 --> 00:11:06,120
Está bien.

224
00:11:06,120 --> 00:11:08,860
Así que claramente, esto aquí fue falso.

225
00:11:08,860 --> 00:11:10,820
porque no existía.

226
00:11:10,820 --> 00:11:12,630
Y entonces no pasó nada.

227
00:11:12,630 --> 00:11:15,260
Entonces el objeto permaneció exactamente igual.

228
00:11:15,260 --> 00:11:19,210
Entonces aquí esto aquí era de hecho verdad,

229
00:11:19,210 --> 00:11:22,150
por lo que fue Giovanni antes.

230
00:11:22,150 --> 00:11:25,750
Y así fue reemplazado ahora con esta otra cadena.

231
00:11:25,750 --> 00:11:29,130
Y de nuevo, si alguna vez necesita asignar un valor

232
00:11:29,130 --> 00:11:31,970
a una variable que ya está definida,

233
00:11:31,970 --> 00:11:34,860
por lo que tiene un valor que actualmente es verdadero,

234
00:11:34,860 --> 00:11:38,033
entonces puede usar este y el operador de asignación.