diff --git a/Basic/16-functions.js b/Basic/16-functions.js
index e5d3dec5..b7952a02 100644
--- a/Basic/16-functions.js
+++ b/Basic/16-functions.js
@@ -62,7 +62,7 @@ function defaultSum(a = 0, b = 0) {
defaultSum()
defaultSum(5)
defaultSum(5, 10)
-defaultSum(b = 5)
+defaultSum(undefined, 5)
// Retorno de valores
@@ -96,11 +96,11 @@ applyFunc(myFunc4, "función de orden superior")
// forEach
-myArray = [1, 2, 3, 4]
+const myArray = [1, 2, 3, 4]
-mySet = new Set(["Brais", "Moure", "mouredev", 37, true, "braismoure@mouredev.com"])
+const mySet = new Set(["Brais", "Moure", "mouredev", 37, true, "braismoure@mouredev.com"])
-myMap = new Map([
+const myMap = new Map([
["name", "Brais"],
["email", "braismoure@mouredev.com"],
["age", 37]
diff --git a/Images/header.jpg b/Images/header.jpg
old mode 100755
new mode 100644
index fcd61a08..b4d99095
Binary files a/Images/header.jpg and b/Images/header.jpg differ
diff --git a/Intermediate/00-advanced-functions.js b/Intermediate/00-advanced-functions.js
index 1bbd1141..e2094d5f 100644
--- a/Intermediate/00-advanced-functions.js
+++ b/Intermediate/00-advanced-functions.js
@@ -1,6 +1,6 @@
/*
-Clase 1 - Funciones avanzadas (29/01/2025)
-Vídeo: https://www.twitch.tv/videos/2403685765?t=00h08m45s
+Clases 2 a 11 - Funciones avanzadas
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=346
*/
// Ciudadanos de primera clase
diff --git a/Intermediate/01-advanced-functions-exercises.js b/Intermediate/01-advanced-functions-exercises.js
index c1ac67d4..2d182882 100644
--- a/Intermediate/01-advanced-functions-exercises.js
+++ b/Intermediate/01-advanced-functions-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 1 - Funciones avanzadas (29/01/2025)
-Vídeo: https://www.twitch.tv/videos/2403685765?t=00h08m45s
+Clase 12 - Funciones avanzadas
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=4112
*/
// 1. Crea una función que retorne a otra función
diff --git a/Intermediate/02-advanced-structures.js b/Intermediate/02-advanced-structures.js
index be9ea84e..52245b08 100644
--- a/Intermediate/02-advanced-structures.js
+++ b/Intermediate/02-advanced-structures.js
@@ -1,6 +1,6 @@
/*
-Clase 2 - Estructuras avanzadas (05/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403685940?t=00h15m32s
+Clases 13 a 22 - Estructuras avanzadas
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=4355
*/
// Arrays avanzados
diff --git a/Intermediate/03-advanced-structures-exercises.js b/Intermediate/03-advanced-structures-exercises.js
index bd997788..c633ef28 100644
--- a/Intermediate/03-advanced-structures-exercises.js
+++ b/Intermediate/03-advanced-structures-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 2 - Estructuras avanzadas (05/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403685940?t=00h15m32s
+Clase 23 - Estructuras avanzadas
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=7514
*/
// 1. Utiliza map, filter y reduce para crear un ejemplo diferente al de la lección
diff --git a/Intermediate/04-advanced-objects.js b/Intermediate/04-advanced-objects.js
index 6f53dac0..d99a0250 100644
--- a/Intermediate/04-advanced-objects.js
+++ b/Intermediate/04-advanced-objects.js
@@ -1,6 +1,6 @@
/*
-Clase 3 - Objetos y Clases avanzadas (12/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403685993?t=00h21m33s
+Clases 24 a 28 - Objetos y clases avanzados
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=7639
*/
// Objetos avanzados
diff --git a/Intermediate/05-advanced-classes.js b/Intermediate/05-advanced-classes.js
index db4de858..61c086d6 100644
--- a/Intermediate/05-advanced-classes.js
+++ b/Intermediate/05-advanced-classes.js
@@ -1,6 +1,6 @@
/*
-Clase 3 - Objetos y Clases avanzadas (12/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403685993?t=00h21m33s
+Clases 29 a 37 - Objetos y clases avanzados
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=9096
*/
// Clases avanzadas
diff --git a/Intermediate/06-advanced-objects-classes-exercises.js b/Intermediate/06-advanced-objects-classes-exercises.js
index 9aaef66c..af2d1192 100644
--- a/Intermediate/06-advanced-objects-classes-exercises.js
+++ b/Intermediate/06-advanced-objects-classes-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 3 - Objetos y Clases avanzadas (12/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403685993?t=00h21m33s
+Clase 38 - Objetos y clases avanzados
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=11832
*/
// 1. Agregega una función al prototipo de un objeto
diff --git a/Intermediate/07-async.js b/Intermediate/07-async.js
index 599c3dc8..376131fc 100644
--- a/Intermediate/07-async.js
+++ b/Intermediate/07-async.js
@@ -1,6 +1,6 @@
/*
-Clase 4 - Programación asíncrona (19/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403686047?t=00h22m48s
+Clases 39 a 44 - Asincronía
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=11890
*/
// Programación asíncrona
diff --git a/Intermediate/08-async-exercises.js b/Intermediate/08-async-exercises.js
index 39db7c7c..2dfecf6c 100644
--- a/Intermediate/08-async-exercises.js
+++ b/Intermediate/08-async-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 4 - Programación asíncrona (19/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403686047?t=00h22m48s
+Clase 45 - Asincronía
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=14558
*/
// 1. Crea una función para saludar que reciba un nombre y un callback.
diff --git a/Intermediate/09-apis.js b/Intermediate/09-apis.js
index 954b8490..fc172f08 100644
--- a/Intermediate/09-apis.js
+++ b/Intermediate/09-apis.js
@@ -1,6 +1,6 @@
/*
-Clase 5 - Manejo de APIs (26/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403686091?t=00h17m25s
+Clases 46 a 59 - APIs
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=14777
*/
// Manejo de APIs
diff --git a/Intermediate/10-apis-exercises.js b/Intermediate/10-apis-exercises.js
index 5ae85ffd..54962e23 100644
--- a/Intermediate/10-apis-exercises.js
+++ b/Intermediate/10-apis-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 5 - Manejo de APIs (26/02/2025)
-Vídeo: https://www.twitch.tv/videos/2403686091?t=00h17m25s
+Clase 60 - APIs
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=18710
*/
// 1. Realiza una petición GET con fetch() a JSONPlaceholder y muestra en la consola la lista de publicaciones
diff --git a/Intermediate/11-dom.js b/Intermediate/11-dom.js
index b9a96a4b..64d8fe49 100644
--- a/Intermediate/11-dom.js
+++ b/Intermediate/11-dom.js
@@ -1,6 +1,6 @@
/*
-Clase 6 - Manejo del DOM (06/03/2025)
-Vídeo: https://www.twitch.tv/videos/2403686130?t=00h11m52s
+Clases 61 a 68 - DOM
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=18822
*/
// Manejo del DOM (Document Object Model)
diff --git a/Intermediate/12-dom-example.html b/Intermediate/12-dom-example.html
index 3c254094..aab8d1f1 100644
--- a/Intermediate/12-dom-example.html
+++ b/Intermediate/12-dom-example.html
@@ -1,6 +1,6 @@
diff --git a/Intermediate/13-dom-example.js b/Intermediate/13-dom-example.js
index 2744abe9..946568d4 100644
--- a/Intermediate/13-dom-example.js
+++ b/Intermediate/13-dom-example.js
@@ -1,6 +1,6 @@
/*
-Clase 6 - Manejo del DOM (06/03/2025)
-Vídeo: https://www.twitch.tv/videos/2403686130?t=00h11m52s
+Clase 69 - DOM
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=21754
*/
console.log(document)
diff --git a/Intermediate/14-tasklist.html b/Intermediate/14-tasklist.html
index 27733726..7f691bfd 100644
--- a/Intermediate/14-tasklist.html
+++ b/Intermediate/14-tasklist.html
@@ -1,6 +1,6 @@
diff --git a/Intermediate/15-tasklist.js b/Intermediate/15-tasklist.js
index 8a2cc557..0f126986 100644
--- a/Intermediate/15-tasklist.js
+++ b/Intermediate/15-tasklist.js
@@ -1,6 +1,6 @@
/*
-Clase 6 - Manejo del DOM (06/03/2025)
-Vídeo: https://www.twitch.tv/videos/2403686130?t=00h11m52s
+Clase 70 - DOM
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=22342
*/
const text = document.getElementById("text")
diff --git a/Intermediate/16-dom-exercises.js b/Intermediate/16-dom-exercises.js
index ba6ea556..468093dc 100644
--- a/Intermediate/16-dom-exercises.js
+++ b/Intermediate/16-dom-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 6 - Manejo del DOM (06/03/2025)
-Vídeo: https://www.twitch.tv/videos/2403686130?t=00h11m52s
+Clase 71 - DOM
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=23010
*/
// 1. Crea un elemento (por ejemplo, un
) y cambia su contenido a "¡Hola Mundo!"" al cargar la página
diff --git a/Intermediate/17-debugging.js b/Intermediate/17-debugging.js
index 76452527..cef6ba93 100644
--- a/Intermediate/17-debugging.js
+++ b/Intermediate/17-debugging.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clases 72 a 73 - Depuración
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=23085
*/
// Depuración
diff --git a/Intermediate/18-debugging-exercises.js b/Intermediate/18-debugging-exercises.js
index 70d12c34..36d28dba 100644
--- a/Intermediate/18-debugging-exercises.js
+++ b/Intermediate/18-debugging-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clases 74 - Depuración
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=24329
*/
// 1. Crea un código con un error lógico y usa VS Code para encontrarlo
diff --git a/Intermediate/19-regex.js b/Intermediate/19-regex.js
index d2b7918c..9c305b2c 100644
--- a/Intermediate/19-regex.js
+++ b/Intermediate/19-regex.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clases 75 a 78 - Regex
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=24363
*/
// Expresiones regulares
diff --git a/Intermediate/20-regex-exercises.js b/Intermediate/20-regex-exercises.js
index 75b5cc40..35d33377 100644
--- a/Intermediate/20-regex-exercises.js
+++ b/Intermediate/20-regex-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clase 79 - Regex
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=25888
*/
// 1. Crea una RegEx que valide correos electrónicos
diff --git a/Intermediate/21-testing.js b/Intermediate/21-testing.js
index cb4ff3a0..7c3d85f4 100644
--- a/Intermediate/21-testing.js
+++ b/Intermediate/21-testing.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clases 80 a 81 - Testing
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=25938
*/
// Testing
diff --git a/Intermediate/22-testing.test.js b/Intermediate/22-testing.test.js
index cf401016..888b2c04 100644
--- a/Intermediate/22-testing.test.js
+++ b/Intermediate/22-testing.test.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clases 80 a 81 - Testing
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=25938
*/
const sum = require('./21-testing')
diff --git a/Intermediate/23-testing-exercises.js b/Intermediate/23-testing-exercises.js
index f194b203..05c02390 100644
--- a/Intermediate/23-testing-exercises.js
+++ b/Intermediate/23-testing-exercises.js
@@ -1,6 +1,6 @@
/*
-Clase 7 - Debug, Regex y Testing (12/03/2025)
-Vídeo: https://www.twitch.tv/videos/2420494093?t=00h21m55s
+Clase 82 - Testing
+Vídeo: https://youtu.be/iJvLAZ8MJ2E?t=26946
*/
// 1. Crea una función isEven(number) que devuelva true si el número es par y false si es impar
diff --git a/README.md b/README.md
index 42fdd8ae..88df06ae 100644
--- a/README.md
+++ b/README.md
@@ -9,51 +9,6 @@
### Proyecto realizado durante emisiones en directo desde [Twitch](https://twitch.tv/mouredev)
> ##### Si consideras útil el curso, apóyalo haciendo "★ Star" en el repositorio. ¡Gracias!
-## 🆕 NUEVO: Curso Intermedio [Finalizado]
-
-
-
-### Curso de fundamentos intermedio (continuación del desde cero).
-
-* Clase 1 [29/01/2025] - Funciones avanzadas
- * [Vídeo](https://www.twitch.tv/videos/2403685765?t=00h08m45s)
- * [Código](./Intermediate/00-advanced-functions.js)
- * [Ejercicios](./Intermediate/01-advanced-functions-exercises.js)
-
-* Clase 2 [05/02/2025] - Estructuras avanzadas
- * [Vídeo](https://www.twitch.tv/videos/2403685940?t=00h15m32s)
- * [Código](./Intermediate/02-advanced-structures.js)
- * [Ejercicios](./Intermediate/03-advanced-structures-exercises.js)
-
-* Clase 3 [12/02/2025] - Objetos y Clases avanzadas
- * [Vídeo](https://www.twitch.tv/videos/2403685993?t=00h21m33s)
- * [Código Objetos](./Intermediate/04-advanced-objects.js)
- * [Código Clases](./Intermediate/05-advanced-classes.js)
- * [Ejercicios](./Intermediate/06-advanced-objects-classes-exercises)
-
-* Clase 4 [19/02/2025] - Programación asíncrona
- * [Vídeo](https://www.twitch.tv/videos/2403686047?t=00h22m48s)
- * [Código](./Intermediate/07-async.js)
- * [Ejercicios](./Intermediate/08-async-exercises.js)
-
-* Clase 5 [26/02/2025] - Manejo de APIs
- * [Vídeo](https://www.twitch.tv/videos/2403686091?t=00h17m25s)
- * [Código](./Intermediate/09-apis.js)
- * [Ejercicios](./Intermediate/10-apis-exercises.js)
-
-* Clase 6 [06/03/2025] - Manejo del DOM
- * [Vídeo](https://www.twitch.tv/videos/2403686130?t=00h11m52s)
- * [Código](./Intermediate/11-dom.js)
- * Ejemplo simple: [HTML](./Intermediate/12-dom-example.html) - [JS](./Intermediate/13-dom-example.js)
- * Ejemplo lista de tareas: [HTML](./Intermediate/14-tasklist.html) - [JS](./Intermediate/15-tasklist.js)
- * [Ejercicios](./Intermediate/16-dom-exercises.js)
-
-* Clase 7 [12/03/2025] - Debug, Regex y Testing
- * [Vídeo](https://www.twitch.tv/videos/2420494093?t=00h21m55s)
- * Debug: [Código](./Intermediate/17-debugging.js) - [Ejercicios](./Intermediate/18-debugging-exercises.js)
- * Regex: [Código](./Intermediate/19-regex.js) - [Ejercicios](./Intermediate/20-regex-exercises.js)
- * Testing: [Código](./Intermediate/21-testing.js) - [Test](./Intermediate/22-testing.test.js) - [Ejercicios](./Intermediate/23-testing-exercises.js)
-
## Clases en vídeo
### Curso de fundamentos desde cero
@@ -108,6 +63,122 @@
* [45 - Ejercicios: Módulos](https://youtu.be/1glVfFxj8a4?t=22720) | [Ejercicios](./Basic/31-modules-exercises.js) | [package.json](./Basic/package.json)
* [Despedida](https://youtu.be/1glVfFxj8a4?t=22776)
+### Curso de fundamentos intermedio (continuación del desde cero)
+
+
+
+* [Introducción](https://youtu.be/iJvLAZ8MJ2E)
+* [1 - Primeros pasos](https://youtu.be/iJvLAZ8MJ2E?t=279)
+
+Funciones avanzadas | [Código](./Intermediate/00-advanced-functions.js)
+
+* [2 - Ciudadanos de primera clase](https://youtu.be/iJvLAZ8MJ2E?t=346)
+* [3 - Arrow functions](https://youtu.be/iJvLAZ8MJ2E?t=782)
+* [4 - IIFE](https://youtu.be/iJvLAZ8MJ2E?t=1278)
+* [5 - Parámetros rest](https://youtu.be/iJvLAZ8MJ2E?t=1873)
+* [6 - Operador Spread](https://youtu.be/iJvLAZ8MJ2E?t=2126)
+* [7 - Closures](https://youtu.be/iJvLAZ8MJ2E?t=2356)
+* [8 - Recursividad](https://youtu.be/iJvLAZ8MJ2E?t=2650)
+* [9 - Funciones parciales](https://youtu.be/iJvLAZ8MJ2E?t=3013)
+* [10 - Currying](https://youtu.be/iJvLAZ8MJ2E?t=3473)
+* [11 - Callbacks](https://youtu.be/iJvLAZ8MJ2E?t=3675)
+* [12 - Ejercicios: Funciones avanzadas](https://youtu.be/iJvLAZ8MJ2E?t=4112) | [Ejercicios](./Intermediate/01-advanced-functions-exercises.js)
+
+Estructuras avanzadas | [Código](./Intermediate/02-advanced-structures.js)
+
+* [13 - Estructuras avanzadas](https://youtu.be/iJvLAZ8MJ2E?t=4355)
+* [14 - Arrays avanzados: métodos funcionales](https://youtu.be/iJvLAZ8MJ2E?t=4411)
+* [15 - Arrays avanzados: manipulación](https://youtu.be/iJvLAZ8MJ2E?t=5244)
+* [16 - Arrays avanzados: ordenación](https://youtu.be/iJvLAZ8MJ2E?t=5621)
+* [17 - Arrays avanzados: búsqueda](https://youtu.be/iJvLAZ8MJ2E?t=5979)
+* [18 - Sets avanzados: operaciones](https://youtu.be/iJvLAZ8MJ2E?t=6288)
+* [19 - Sets avanzados: conversión](https://youtu.be/iJvLAZ8MJ2E?t=6949)
+* [20 - Sets avanzados: iteración](https://youtu.be/iJvLAZ8MJ2E?t=6992)
+* [21 - Maps avanzados: iteración](https://youtu.be/iJvLAZ8MJ2E?t=7061)
+* [22 - Maps avanzados: conversión](https://youtu.be/iJvLAZ8MJ2E?t=7207)
+* [23 - Ejercicios: Estructuras avanzadas](https://youtu.be/iJvLAZ8MJ2E?t=7514) | [Ejercicios](./Intermediate/03-advanced-structures-exercises.js)
+
+Objetos y clases avanzados | [Código Objetos](./Intermediate/04-advanced-objects.js) | [Código Clases](./Intermediate/05-advanced-classes.js)
+
+* [24 - Objetos avanzados](https://youtu.be/iJvLAZ8MJ2E?t=7639)
+* [25 - Prototipos](https://youtu.be/iJvLAZ8MJ2E?t=7695)
+* [26 - Herencia](https://youtu.be/iJvLAZ8MJ2E?t=8068)
+* [27 - Métodos estáticos y de instancia](https://youtu.be/iJvLAZ8MJ2E?t=8577)
+* [28 - Métodos avanzados](https://youtu.be/iJvLAZ8MJ2E?t=8896)
+* [29 - Clases avanzadas](https://youtu.be/iJvLAZ8MJ2E?t=9096)
+* [30 - Abstracción](https://youtu.be/iJvLAZ8MJ2E?t=9408)
+* [31 - Polimorfismo](https://youtu.be/iJvLAZ8MJ2E?t=9694)
+* [32 - Mixins](https://youtu.be/iJvLAZ8MJ2E?t=9956)
+* [33 - Singleton](https://youtu.be/iJvLAZ8MJ2E?t=10454)
+* [34 - Symbol](https://youtu.be/iJvLAZ8MJ2E?t=10901)
+* [35 - instanceof](https://youtu.be/iJvLAZ8MJ2E?t=11264)
+* [36 - create](https://youtu.be/iJvLAZ8MJ2E?t=11331)
+* [37 - Proxy](https://youtu.be/iJvLAZ8MJ2E?t=11375)
+* [38 - Ejercicios: Objetos y clases avanzados](https://youtu.be/iJvLAZ8MJ2E?t=11832) | [Ejercicios](./Intermediate/06-advanced-objects-classes-exercises)
+
+Asincronía | [Código](./Intermediate/07-async.js)
+
+* [39 - Asincronía](https://youtu.be/iJvLAZ8MJ2E?t=11890)
+* [40 - Código síncrono](https://youtu.be/iJvLAZ8MJ2E?t=12245)
+* [41 - Event Loop](https://youtu.be/iJvLAZ8MJ2E?t=12366)
+* [42 - Callbacks](https://youtu.be/iJvLAZ8MJ2E?t=12729)
+* [43 - Promesas](https://youtu.be/iJvLAZ8MJ2E?t=13349)
+* [44 - Async/Await](https://youtu.be/iJvLAZ8MJ2E?t=14171)
+* [45 - Ejercicios: Asincronía](https://youtu.be/iJvLAZ8MJ2E?t=14558) | [Ejercicios](./Intermediate/08-async-exercises.js)
+
+APIs | [Código](./Intermediate/09-apis.js)
+
+* [46 - APIs](https://youtu.be/iJvLAZ8MJ2E?t=14777)
+* [47 - API REST](https://youtu.be/iJvLAZ8MJ2E?t=14973)
+* [48 - Métodos HTTP](https://youtu.be/iJvLAZ8MJ2E?t=15134)
+* [49 - Códigos de respuesta HTTP](https://youtu.be/iJvLAZ8MJ2E?t=15294)
+* [50 - GET](https://youtu.be/iJvLAZ8MJ2E?t=15477)
+* [51 - Async/Await en APIs](https://youtu.be/iJvLAZ8MJ2E?t=16400)
+* [52 - POST](https://youtu.be/iJvLAZ8MJ2E?t=16626)
+* [53 - Herramientas para realizar peticiones HTTP](https://youtu.be/iJvLAZ8MJ2E?t=17088)
+* [54 - Manejo de errores](https://youtu.be/iJvLAZ8MJ2E?t=17325)
+* [55 - Métodos HTTP adicionales](https://youtu.be/iJvLAZ8MJ2E?t=17619)
+* [56 - Autenticación mediante API Key](https://youtu.be/iJvLAZ8MJ2E?t=17770)
+* [57 - Otros métodos de autenticación y autorización](https://youtu.be/iJvLAZ8MJ2E?t=18244)
+* [58 - Versionado de APIs](https://youtu.be/iJvLAZ8MJ2E?t=18323)
+* [59 - Otras APIs](https://youtu.be/iJvLAZ8MJ2E?t=18441)
+* [60 - Ejercicios: APIs](https://youtu.be/iJvLAZ8MJ2E?t=18710) | [Ejercicios](./Intermediate/10-apis-exercises.js)
+
+DOM | [Código](./Intermediate/11-dom.js)
+
+* [61 - DOM](https://youtu.be/iJvLAZ8MJ2E?t=18822)
+* [62 - Estructura del DOM](https://youtu.be/iJvLAZ8MJ2E?t=19105)
+* [63 - Métodos de selección](https://youtu.be/iJvLAZ8MJ2E?t=19172)
+* [64 - Manipulación de elementos](https://youtu.be/iJvLAZ8MJ2E?t=19792)
+* [65 - Modificación de atributos](https://youtu.be/iJvLAZ8MJ2E?t=19996)
+* [66 - Interacción con clases CSS](https://youtu.be/iJvLAZ8MJ2E?t=20326)
+* [67 - Creación y eliminación de elementos](https://youtu.be/iJvLAZ8MJ2E?t=20787)
+* [68 - Elementos y eventos del DOM](https://youtu.be/iJvLAZ8MJ2E?t=21377)
+* [69 - Ejemplos: acceso al DOM](https://youtu.be/iJvLAZ8MJ2E?t=21754) | Ejemplo simple: [HTML](./Intermediate/12-dom-example.html) - [JS](./Intermediate/13-dom-example.js)
+* [70 - Ejemplos: lista de tareas](https://youtu.be/iJvLAZ8MJ2E?t=22342) Ejemplo lista de tareas: [HTML](./Intermediate/14-tasklist.html) - [JS](./Intermediate/15-tasklist.js)
+* [71 - Ejercicios: DOM](https://youtu.be/iJvLAZ8MJ2E?t=23010) | [Ejercicios](./Intermediate/16-dom-exercises.js)
+
+Depuración | [Código](./Intermediate/17-debugging.js)
+
+* [72 - Depuración](https://youtu.be/iJvLAZ8MJ2E?t=23085)
+* [73 - Depurador](https://youtu.be/iJvLAZ8MJ2E?t=23370)
+* [74 - Ejercicios: Depuración](https://youtu.be/iJvLAZ8MJ2E?t=24329) | [Ejercicios](./Intermediate/18-debugging-exercises.js)
+
+Regex | [Código](./Intermediate/19-regex.js)
+
+* [75 - Regex](https://youtu.be/iJvLAZ8MJ2E?t=24363)
+* [76 - Sintaxis: test](https://youtu.be/iJvLAZ8MJ2E?t=24444)
+* [77 - Sintaxis: replace](https://youtu.be/iJvLAZ8MJ2E?t=24989)
+* [78 - Sintaxis: exec](https://youtu.be/iJvLAZ8MJ2E?t=25365)
+* [79 - Ejercicios: Regex](https://youtu.be/iJvLAZ8MJ2E?t=25888) | [Ejercicios](./Intermediate/20-regex-exercises.js)
+
+Testing | [Código](./Intermediate/21-testing.js) | [Test](./Intermediate/22-testing.test.js)
+
+* [80 - Testing](https://youtu.be/iJvLAZ8MJ2E?t=25938)
+* [81 - Jest](https://youtu.be/iJvLAZ8MJ2E?t=26272)
+* [82 - Ejercicios: Testing](https://youtu.be/iJvLAZ8MJ2E?t=26946) | [Ejercicios](./Intermediate/23-testing-exercises.js)
+* [Despedida](https://youtu.be/iJvLAZ8MJ2E?t=26970)
+
## Enlaces de interés
* Impacto: [Stack Overflow](https://survey.stackoverflow.co/2023/#most-popular-technologies-language) | [GitHub](https://github.blog/2023-11-08-the-state-of-open-source-and-ai/) | [Índice TIOBE](https://www.tiobe.com/tiobe-index/) | [Google Trends](https://trends.google.es/trends/explore?cat=5&date=today%205-y&q=%2Fm%2F02p97,%2Fm%2F05z1_,%2Fm%2F07sbkfb&hl=es)
@@ -126,6 +197,7 @@
* APIs: [JSONPlaceholder](https://jsonplaceholder.typicode.com) | [OpenWeather](https://openweathermap.org) | [PokéAPI](https://pokeapi.co)
* Expresiones regulares: [Documentación](https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_expressions/Cheatsheet
) | [Regex101](https://regex101.com/)
+* [Jest](https://jestjs.io/)
## Únete al campus de programación de la comunidad
@@ -135,7 +207,7 @@
> **¿Buscas un extra?** Aquí encontrarás este y otros cursos editados por lecciones individuales, para avanzar a tu ritmo y guardar el progreso. También dispondrás de ejercicios y correcciones, test para validar tus conocimientos, examen y certificado público de finalización, soporte, foro de estudiantes, reunionnes grupales, cursos exclusivos y mucho más.
>
-> Entra en **[mouredev.pro](https://mouredev.pro)** y utiliza el cupón **"JAVASCRIPT"** con un 10% de descuento en tu primera suscripción.
+> Entra en **[mouredev.pro](https://mouredev.pro)** y utiliza el cupón **"JAVASCRIPT"** con un 15% de descuento en tu primera suscripción.
## Preguntas frecuentes