1
00:00:01,350 --> 00:00:03,920
Ahora vamos a crear un ejemplo similar

2
00:00:03,920 --> 00:00:06,075
a lo que teníamos en el último video,

3
00:00:06,075 --> 00:00:11,075
solo para que podamos ver que esto suceda en la práctica.

4
00:00:12,740 --> 00:00:14,370
Y al igual que en un último video,

5
00:00:14,370 --> 00:00:17,393
Empecemos mutando un valor primitivo.

6
00:00:18,553 --> 00:00:21,120
Entonces, ahora usemos el apellido

7
00:00:23,350 --> 00:00:27,130
y voy a ponerlo aquí a Williams.

8
00:00:27,130 --> 00:00:31,090
Y ese es el valor inicial de este apellido.

9
00:00:31,090 --> 00:00:33,600
Entonces, copiémoslo también,

10
00:00:33,600 --> 00:00:35,860
y eso es porque digamos

11
00:00:35,860 --> 00:00:37,870
que esta persona se casa

12
00:00:37,870 --> 00:00:40,870
y decide cambiar su apellido.

13
00:00:40,870 --> 00:00:43,623
Sin embargo, todavía queremos recordar el antiguo nombre.

14
00:00:44,720 --> 00:00:46,020
Entonces, decimos oldLastName

15
00:00:48,130 --> 00:00:51,260
es igual al apellido actual,

16
00:00:51,260 --> 00:00:53,390
en esta posición del código.

17
00:00:53,390 --> 00:00:57,919
Pero luego mutamos en realidad el apellido a Davis.

18
00:00:57,919 --> 00:01:01,570
Básicamente, cuando esta persona se casa,

19
00:01:01,570 --> 00:01:04,347
luego cambian su apellido a Davis.

20
00:01:04,347 --> 00:01:08,023
Y, por supuesto, si ahora echamos un vistazo a ambos.

21
00:01:08,023 --> 00:01:13,023
Entonces, primero el apellido y luego el antiguo apellido,

22
00:01:13,664 --> 00:01:18,540
entonces vemos que en realidad son diferentes.

23
00:01:18,540 --> 00:01:21,530
Entonces, Davis es el nuevo apellido.

24
00:01:21,530 --> 00:01:23,330
Entonces, el que mutamos aquí,

25
00:01:23,330 --> 00:01:27,630
y Williams es este antiguo apellido

26
00:01:27,630 --> 00:01:31,300
que se copió aquí mismo en esta primera línea de código,

27
00:01:31,300 --> 00:01:33,660
o en realidad la segunda línea de código.

28
00:01:33,660 --> 00:01:35,050
Entonces, aquí, todo funciona.

29
00:01:35,050 --> 00:01:38,310
como cabría esperar de forma intuitiva.

30
00:01:38,310 --> 00:01:40,533
Ahora, recuerda, que funciona de esta manera.

31
00:01:40,533 --> 00:01:44,190
porque cada valor primitivo simplemente se guardará

32
00:01:44,190 --> 00:01:48,580
en su propia pieza de memoria en la pila, ¿de acuerdo?

33
00:01:48,580 --> 00:01:52,010
Pero ahora, hagamos lo mismo con un objeto,

34
00:01:52,010 --> 00:01:55,670
que como ya sabemos es un valor de referencia

35
00:01:55,670 --> 00:01:58,510
porque se va a almacenar en el montón,

36
00:01:58,510 --> 00:02:01,320
y la pila solo mantiene una referencia

37
00:02:01,320 --> 00:02:02,890
a la posición de memoria

38
00:02:02,890 --> 00:02:05,993
en el que el objeto se almacena en el montón.

39
00:02:09,500 --> 00:02:13,493
Entonces, creemos un objeto llamado Jessica.

40
00:02:15,190 --> 00:02:17,633
Y así, aquí tendremos un primer nombre,

41
00:02:20,767 --> 00:02:21,993
de Jéssica,

42
00:02:22,890 --> 00:02:24,200
y un apellido

43
00:02:26,353 --> 00:02:27,820
de Williams.

44
00:02:27,820 --> 00:02:31,750
Démosle también una edad de 27

45
00:02:31,750 --> 00:02:33,840
solo para hacerlo más completo.

46
00:02:33,840 --> 00:02:37,268
Y ahora, digamos de nuevo que Jessica se casará.

47
00:02:37,268 --> 00:02:40,160
y por lo tanto cambiará su apellido.

48
00:02:40,160 --> 00:02:43,330
Y esta vez, vamos a crear un nuevo objeto.

49
00:02:43,330 --> 00:02:45,283
para la casada Jessica.

50
00:02:47,130 --> 00:02:48,857
Entonces, casado con Jessica,

51
00:02:49,862 --> 00:02:51,470
y debe ser igual

52
00:02:53,037 --> 00:02:54,060
a Jessica.

53
00:02:54,060 --> 00:02:56,370
Entonces, estamos copiando todo el objeto aquí.

54
00:02:56,370 --> 00:02:59,920
Al menos eso es lo que parece, pero detrás de escena.

55
00:02:59,920 --> 00:03:02,380
en realidad solo estamos copiando la referencia,

56
00:03:02,380 --> 00:03:05,585
que luego apuntará al mismo objeto, ¿recuerdas eso?

57
00:03:05,585 --> 00:03:10,083
Y ahora, mientras cambiamos el apellido en casadaJessica,

58
00:03:11,530 --> 00:03:16,400
Entonces, el apellido, cambiémoslo a Davis,

59
00:03:16,400 --> 00:03:17,880
pero como ya sabemos,

60
00:03:17,880 --> 00:03:20,883
esto no nos dará el resultado que esperamos.

61
00:03:22,770 --> 00:03:25,193
Entonces, antes del matrimonio,

62
00:03:27,150 --> 00:03:31,523
registremos este objeto Jessica original, por así decirlo.

63
00:03:32,470 --> 00:03:36,053
Y luego, después del matrimonio,

64
00:03:38,470 --> 00:03:41,033
y luego aquí, el objeto de Jessica casada.

65
00:03:42,760 --> 00:03:44,190
Dándole un guardado.

66
00:03:44,190 --> 00:03:45,920
Y ahora como vemos,

67
00:03:45,920 --> 00:03:49,090
tenemos antes del matrimonio y después del matrimonio,

68
00:03:49,090 --> 00:03:53,030
tanto el apellido de Davis, ¿de acuerdo?

69
00:03:53,030 --> 00:03:55,640
Entonces, el apellido Davis ahora también es

70
00:03:55,640 --> 00:03:58,290
en el objeto Jessica original

71
00:03:58,290 --> 00:04:01,200
y no solo en el que copiamos.

72
00:04:01,200 --> 00:04:05,420
Y ahora en este punto, ya sabemos por qué sucedió esto.

73
00:04:05,420 --> 00:04:08,800
Entonces, solo para recordar eso, sucedió porque

74
00:04:08,800 --> 00:04:12,900
cuando intentamos copiar el objeto Jessica original,

75
00:04:12,900 --> 00:04:17,900
de hecho, no creó un nuevo objeto en el montón.

76
00:04:17,917 --> 00:04:22,740
Entonces, este de nuevo, no es un objeto nuevo en el montón.

77
00:04:22,740 --> 00:04:25,970
Es simplemente otra variable en la pila,

78
00:04:25,970 --> 00:04:29,445
que contiene la referencia al objeto original.

79
00:04:29,445 --> 00:04:32,660
Entonces, estas dos variables simplemente apuntan

80
00:04:32,660 --> 00:04:36,210
exactamente a la misma dirección de memoria en el montón.

81
00:04:36,210 --> 00:04:38,020
Y eso es porque en la pila,

82
00:04:38,020 --> 00:04:41,740
ambos tienen la misma referencia de dirección de memoria.

83
00:04:41,740 --> 00:04:44,090
Y por supuesto, tiene sentido

84
00:04:44,090 --> 00:04:46,753
que si cambiamos una propiedad en casadaJessica,

85
00:04:47,690 --> 00:04:51,240
también cambiará en la propia Jessica.

86
00:04:51,240 --> 00:04:53,710
Entonces, nuevamente, debido a que son esencialmente

87
00:04:53,710 --> 00:04:57,360
sólo dos nombres diferentes para la misma cosa.

88
00:04:57,360 --> 00:05:01,240
Ahora, esta es también la razón por la que podemos cambiar las propiedades

89
00:05:01,240 --> 00:05:03,410
en el objeto Jessica casada,

90
00:05:03,410 --> 00:05:07,260
que fue declarado usando un const aquí.

91
00:05:07,260 --> 00:05:10,150
Y se supone que const es para constantes.

92
00:05:10,150 --> 00:05:13,110
Entonces, para cosas que no podemos cambiar.

93
00:05:13,110 --> 00:05:16,120
Sin embargo, lo que realmente necesita ser constante

94
00:05:16,120 --> 00:05:18,320
es el valor en la pila.

95
00:05:18,320 --> 00:05:21,600
Y en esta baraja, el valor solo tiene la referencia,

96
00:05:21,600 --> 00:05:24,330
que en realidad no estamos cambiando.

97
00:05:24,330 --> 00:05:27,908
Lo único que estamos cambiando es el objeto subyacente.

98
00:05:27,908 --> 00:05:30,020
que se almacena en el montón.

99
00:05:30,020 --> 00:05:31,840
Y eso está bien para cambiar,

100
00:05:31,840 --> 00:05:35,740
eso no tiene nada que ver con const o let, ¿de acuerdo?

101
00:05:35,740 --> 00:05:38,900
Eso es solo sobre el valor en la pila,

102
00:05:38,900 --> 00:05:40,950
pero si cambiamos algo en el montón

103
00:05:40,950 --> 00:05:44,750
eso no tiene nada que ver con const o let.

104
00:05:44,750 --> 00:05:46,040
Ahora, lo que no podemos hacer

105
00:05:46,040 --> 00:05:49,490
es asignar un objeto completamente diferente ahora

106
00:05:49,490 --> 00:05:51,293
casarse con Jessica.

107
00:05:52,720 --> 00:05:56,220
Entonces, por ejemplo, no podríamos decir casadoJessica

108
00:05:56,220 --> 00:06:00,930
es igual a este nuevo objeto vacío, por lo que no funcionará.

109
00:06:00,930 --> 00:06:02,310
Porque este nuevo objeto

110
00:06:02,310 --> 00:06:05,120
se almacenará en una posición diferente en la memoria,

111
00:06:05,120 --> 00:06:08,680
y por lo tanto la referencia a esa posición en la memoria

112
00:06:08,680 --> 00:06:11,600
tendrá que cambiar aquí en esta variable.

113
00:06:11,600 --> 00:06:13,940
Y por lo tanto, eso no funciona.

114
00:06:13,940 --> 00:06:18,050
Porque eso está en la pila y, dado que es una constante,

115
00:06:18,050 --> 00:06:20,700
no podemos cambiar ese valor en la pila.

116
00:06:20,700 --> 00:06:23,830
Entonces, no podemos cambiar el valor a una nueva dirección de memoria,

117
00:06:23,830 --> 00:06:26,533
y por lo tanto, esto no funciona.

118
00:06:26,533 --> 00:06:28,458
Si fuera un alquiler aquí,

119
00:06:28,458 --> 00:06:31,730
entonces podríamos hacer esto, lo que tenemos aquí.

120
00:06:31,730 --> 00:06:36,660
Pero como es una constante, de nuevo, no está permitido.

121
00:06:36,660 --> 00:06:40,270
Entonces, como conclusión, cambiando completamente el objeto,

122
00:06:40,270 --> 00:06:42,830
entonces, asignándole un nuevo objeto

123
00:06:42,830 --> 00:06:46,143
es completamente diferente a simplemente cambiar una propiedad

124
00:06:46,143 --> 00:06:48,380
como hicimos aquí.

125
00:06:48,380 --> 00:06:49,213
¿Bueno?

126
00:06:49,213 --> 00:06:50,920
Entonces, es una diferencia fundamental.

127
00:06:50,920 --> 00:06:54,558
Por lo tanto, asegúrese de entender realmente esto.

128
00:06:54,558 --> 00:06:59,558
De todos modos, ¿qué pasaría si realmente quisiéramos copiar el objeto

129
00:07:00,150 --> 00:07:02,480
para que luego podamos cambiar uno de ellos

130
00:07:02,480 --> 00:07:04,550
sin cambiar el otro?

131
00:07:04,550 --> 00:07:07,880
Entonces, déjame mostrarte una manera en la que podemos hacer eso.

132
00:07:07,880 --> 00:07:10,130
Primero agreguemos algunos comentarios aquí una vez más.

133
00:07:13,600 --> 00:07:15,023
Entonces, tipos primitivos,

134
00:07:16,970 --> 00:07:18,970
tipos de referencia,

135
00:07:18,970 --> 00:07:19,963
y luego,

136
00:07:22,230 --> 00:07:24,050
digamos ahora,

137
00:07:24,050 --> 00:07:24,910
proceso de copiar

138
00:07:26,730 --> 00:07:28,110
objetos.

139
00:07:28,110 --> 00:07:29,610
Está bien.

140
00:07:29,610 --> 00:07:32,880
Y de hecho vamos a crear un nuevo objeto Jessica,

141
00:07:32,880 --> 00:07:35,223
déjame, de hecho, copiarlo desde aquí.

142
00:07:39,410 --> 00:07:41,207
Entonces, digamos, Jessica2.

143
00:07:43,070 --> 00:07:46,310
Y ahora, si realmente quisiéramos copiar este objeto,

144
00:07:46,310 --> 00:07:50,660
podríamos usar una función llamada object.assign.

145
00:07:50,660 --> 00:07:52,100
Y lo que hace esta función

146
00:07:52,100 --> 00:07:54,730
es esencialmente fusionar dos objetos

147
00:07:54,730 --> 00:07:57,220
y luego devolver uno nuevo.

148
00:07:57,220 --> 00:07:58,603
Entonces, podríamos hacer esto,

149
00:08:00,337 --> 00:08:02,373
objeto.asignar.

150
00:08:03,300 --> 00:08:05,790
Y, de nuevo, podemos usar esta función

151
00:08:05,790 --> 00:08:07,700
para fusionar dos objetos.

152
00:08:07,700 --> 00:08:08,680
Y entonces, lo que podemos hacer

153
00:08:08,680 --> 00:08:12,000
es simplemente fusionar un nuevo objeto vacío

154
00:08:12,000 --> 00:08:14,085
con Jessica2.

155
00:08:14,085 --> 00:08:17,670
Y esto creará un objeto completamente nuevo.

156
00:08:17,670 --> 00:08:20,930
donde todas las propiedades son realmente copiadas.

157
00:08:20,930 --> 00:08:21,763
¿Está bien?

158
00:08:21,763 --> 00:08:23,940
Entonces, el resultado de llamar a esta función aquí

159
00:08:23,940 --> 00:08:27,000
con estos argumentos será un nuevo objeto.

160
00:08:27,000 --> 00:08:29,590
Entonces, guardemos eso en

161
00:08:31,966 --> 00:08:32,966
JessicaCopy.

162
00:08:33,850 --> 00:08:38,248
Y ahora, digamos que JessicaCopy se casa.

163
00:08:38,248 --> 00:08:41,170
Entonces, la misma situación que antes.

164
00:08:41,170 --> 00:08:43,353
cambiando su apellido a Davis.

165
00:08:46,310 --> 00:08:49,703
Y ahora, bloqueemos ambos en la consola como aquí.

166
00:08:53,500 --> 00:08:54,667
Entonces, Jessica2,

167
00:08:56,100 --> 00:08:57,050
y luego aquí está

168
00:08:58,579 --> 00:09:00,243
JessicaCopy.

169
00:09:01,490 --> 00:09:03,293
Entonces, veamos qué pasa ahora.

170
00:09:05,248 --> 00:09:09,013
Entonces, son estos dos últimos aquí de la línea 222 y 223,

171
00:09:10,063 --> 00:09:11,090
¿bien?

172
00:09:11,090 --> 00:09:12,600
Y así ahora de hecho,

173
00:09:12,600 --> 00:09:16,230
podemos conservar el apellido original Williams

174
00:09:16,230 --> 00:09:20,490
después de que cambiemos el apellido en este otro objeto aquí.

175
00:09:20,490 --> 00:09:22,270
Entonces, esta JessicaCopy.

176
00:09:22,270 --> 00:09:25,370
Y lo que esto significa es que este objeto ahora

177
00:09:25,370 --> 00:09:28,670
es de hecho una copia real del original.

178
00:09:28,670 --> 00:09:31,540
Entonces, todas las propiedades fueron esencialmente copiadas

179
00:09:31,540 --> 00:09:33,830
de un objeto al otro.

180
00:09:33,830 --> 00:09:36,060
Y entonces, detrás de escena, lo que eso significa

181
00:09:36,060 --> 00:09:39,630
es que, de hecho, se creó un nuevo objeto en el montón

182
00:09:39,630 --> 00:09:43,700
y JessicaCopy ahora apunta a ese objeto.

183
00:09:43,700 --> 00:09:47,160
Entonces, tiene una referencia a ese nuevo objeto.

184
00:09:47,160 --> 00:09:49,830
Sin embargo, todavía hay un problema

185
00:09:49,830 --> 00:09:53,634
porque usando esta técnica de object.assign

186
00:09:53,634 --> 00:09:56,620
solo funciona en el primer nivel.

187
00:09:56,620 --> 00:10:01,260
O dicho de otro modo, si tenemos un objeto dentro del objeto,

188
00:10:01,260 --> 00:10:05,650
entonces este objeto interno seguirá siendo el mismo.

189
00:10:05,650 --> 00:10:08,820
Por lo tanto, seguirá apuntando al mismo lugar en la memoria.

190
00:10:08,820 --> 00:10:11,796
Y por eso decimos que este object.assign

191
00:10:11,796 --> 00:10:14,830
solo crea una copia superficial

192
00:10:14,830 --> 00:10:18,878
y no un clon profundo que es lo que nos gustaría tener.

193
00:10:18,878 --> 00:10:22,870
Entonces, nuevamente, una copia superficial solo copiará las propiedades

194
00:10:22,870 --> 00:10:27,610
en el primer nivel mientras que un clon profundo copiaría todo.

195
00:10:27,610 --> 00:10:29,230
Y para ilustrar esto,

196
00:10:29,230 --> 00:10:31,810
déjame mostrarte lo que quiero decir.

197
00:10:31,810 --> 00:10:36,810
Entonces, agreguemos una matriz aquí en este objeto original.

198
00:10:37,330 --> 00:10:38,963
Por lo tanto, una matriz de la familia.

199
00:10:40,216 --> 00:10:43,032
Y esto va a funcionar como un ejemplo

200
00:10:43,032 --> 00:10:47,423
porque una matriz es realmente solo un objeto detrás de escena.

201
00:10:48,782 --> 00:10:52,920
Entonces, aquí puedo probarte mi punto con esto.

202
00:10:52,920 --> 00:10:56,736
Entonces, ahora tenemos una matriz llamada familia, ¿de acuerdo?

203
00:10:56,736 --> 00:10:59,953
Y así, verás que ahora esta matriz aquí

204
00:10:59,953 --> 00:11:03,040
es de hecho en ambos objetos.

205
00:11:03,040 --> 00:11:04,500
Entonces, está bien.

206
00:11:04,500 --> 00:11:06,210
Hasta ahora, todo bien.

207
00:11:06,210 --> 00:11:11,150
Pero ahora, cambiemos esa matriz en JessicaCopy.

208
00:11:11,150 --> 00:11:12,420
Entonces, en este,

209
00:11:12,420 --> 00:11:17,400
porque al casarse Jessica, también aumentó su familia.

210
00:11:17,400 --> 00:11:21,363
Entonces, agreguemos ahora algunos miembros más de la familia allí.

211
00:11:24,286 --> 00:11:27,920
Entonces, JessicaCopy.family,

212
00:11:27,920 --> 00:11:31,100
y luego usemos el método push para agregar un nuevo elemento

213
00:11:31,100 --> 00:11:32,373
hasta el final de la matriz.

214
00:11:33,570 --> 00:11:37,543
Agreguemos a Mary y agreguemos también otra.

215
00:11:39,310 --> 00:11:40,313
Entonces, family.push,

216
00:11:43,875 --> 00:11:45,890
y agreguemos a John.

217
00:11:45,890 --> 00:11:50,060
Entonces, recuerda que aquí estamos manipulando el objeto copiado,

218
00:11:50,060 --> 00:11:52,440
que en realidad es una copia,

219
00:11:52,440 --> 00:11:55,480
pero ahora aquí estamos manipulando un objeto

220
00:11:55,480 --> 00:11:57,103
eso está dentro del objeto.

221
00:11:58,190 --> 00:11:59,863
Entonces, ese es este objeto.

222
00:12:00,750 --> 00:12:02,303
Y así, ahora que guardamos esto,

223
00:12:03,456 --> 00:12:05,370
todavía se ve igual,

224
00:12:05,370 --> 00:12:08,350
pero eso es porque necesitamos iniciar sesión, por supuesto,

225
00:12:08,350 --> 00:12:10,053
después de que ocurra esta operación.

226
00:12:11,560 --> 00:12:14,880
Y ahora, vemos que tanto los objetos

227
00:12:14,880 --> 00:12:17,643
Ahora tenemos una familia de cuatro miembros.

228
00:12:20,247 --> 00:12:24,050
Abramos esto un poco, démosle un poco más de espacio.

229
00:12:24,050 --> 00:12:28,095
Y de hecho, ahora antes del matrimonio y después del matrimonio,

230
00:12:28,095 --> 00:12:32,325
la familia tiene estos cuatro miembros, ¿de acuerdo?

231
00:12:32,325 --> 00:12:34,800
Entonces, el apellido era, por supuesto,

232
00:12:34,800 --> 00:12:36,773
como ya vimos conservado.

233
00:12:37,680 --> 00:12:40,240
Entonces, el nombre antes del matrimonio es Williams,

234
00:12:40,240 --> 00:12:43,605
y eso se conservó porque eso está en el primer nivel

235
00:12:43,605 --> 00:12:48,605
y object.assign aquí se encargó de copiar esa propiedad.

236
00:12:48,960 --> 00:12:52,780
Y entonces eso no se cambió como cambiamos el apellido.

237
00:12:52,780 --> 00:12:54,290
en la copia.

238
00:12:54,290 --> 00:12:59,130
Sin embargo, el objeto de familia es un objeto profundamente anidado.

239
00:12:59,130 --> 00:13:03,370
Y por lo tanto, object.assign realmente no,

240
00:13:03,370 --> 00:13:06,910
detrás de escena, cópielo en el nuevo objeto.

241
00:13:06,910 --> 00:13:07,743
¿Está bien?

242
00:13:07,743 --> 00:13:10,790
Entonces, en esencia, ambos objetos, Jessica2 y JessicaCopy

243
00:13:12,790 --> 00:13:15,060
tener una propiedad llamada familia,

244
00:13:15,060 --> 00:13:18,810
que apunta al mismo objeto en el montón de memoria,

245
00:13:18,810 --> 00:13:22,810
y ese objeto es, por supuesto, esta matriz.

246
00:13:22,810 --> 00:13:25,250
Y así, cuando cambiamos la matriz en uno de ellos,

247
00:13:25,250 --> 00:13:28,410
también va a ser cambiado en el otro.

248
00:13:28,410 --> 00:13:31,358
Ahora, un clon profundo es lo que necesitaríamos aquí,

249
00:13:31,358 --> 00:13:33,760
pero no es fácil de lograr,

250
00:13:33,760 --> 00:13:37,300
y en realidad estaría más allá del alcance de este video

251
00:13:37,300 --> 00:13:40,620
para aprender a crear un clon profundo.

252
00:13:40,620 --> 00:13:42,800
Por lo general, hacemos algo como esto.

253
00:13:42,800 --> 00:13:45,070
que es como muy complejo

254
00:13:45,070 --> 00:13:49,090
usando una biblioteca externa, por ejemplo, como Lo-Dash,

255
00:13:49,090 --> 00:13:52,460
y esta biblioteca tiene un montón de herramientas útiles

256
00:13:52,460 --> 00:13:54,960
y uno de ellos es para la clonación profunda.

257
00:13:54,960 --> 00:13:57,750
Y de hecho, lo haremos en una sección posterior.

258
00:13:57,750 --> 00:14:01,550
solo para que veas cómo podemos incluir una biblioteca externa

259
00:14:01,550 --> 00:14:03,451
para hacer este tipo de cosas.

260
00:14:03,451 --> 00:14:04,820
Está bien.

261
00:14:04,820 --> 00:14:07,810
Y con esto, en realidad terminamos esta sección.

262
00:14:07,810 --> 00:14:11,140
sobre cómo funciona JavaScript entre bastidores.

263
00:14:11,140 --> 00:14:14,500
Y fue largo con tantas cosas

264
00:14:14,500 --> 00:14:16,853
y tantos conceptos nuevos para aprender.

265
00:14:16,853 --> 00:14:20,750
Y muchos de ellos fueron difíciles y probablemente confusos,

266
00:14:20,750 --> 00:14:22,470
pero eso no es un problema.

267
00:14:22,470 --> 00:14:24,505
Aunque siempre es parte del aprendizaje,

268
00:14:24,505 --> 00:14:29,505
y aunque no entendiste el 100% de todo,

269
00:14:29,520 --> 00:14:31,870
sigues siendo bueno para seguir adelante en el curso

270
00:14:31,870 --> 00:14:33,840
a la siguiente sección ahora.

271
00:14:33,840 --> 00:14:35,970
Pero llegando al final de esta sección

272
00:14:35,970 --> 00:14:40,110
ya te dio una gran ventaja sobre muchos otros desarrolladores,

273
00:14:40,110 --> 00:14:43,430
que no tienen idea de muchas de las cosas

274
00:14:43,430 --> 00:14:45,840
que te mostré aquí en esta sección.

275
00:14:45,840 --> 00:14:49,189
Entonces, felicidades por seguir con esto hasta el final.

276
00:14:49,189 --> 00:14:52,580
y por aprender todo este valioso conocimiento.

277
00:14:52,580 --> 00:14:55,123
Y ahora, te veo en la siguiente sección.