В настройках убрать галку напротив Editor: Match Brackets -> hightlight matching brackets..., если я правильно понял (ctrl + shift + p, вбиваем settings ui, там в поиске editor.matchBrackets)
Подскажу не курс, а книгу, если именно алгоритмы интересуют - Грокаем алгоритмы. Имхо хорошо подходит для "въезжания" в тему и очень доступно для начинающих.
Дело в hoisting. Присваивание значений не поднимается вместе с объявлением переменных.
Ваш код аналогичен следующему:
var p = 'val';
(function () {
var name; // undefined
if (typeof name === 'undefined') {
console.log(name);
name = "newVal";
console.log(name);
} else {
console.log(name);
}
})();// newVal