Что за ерунду люди несут?
Данный код содержит ошибку. Индексация что массива, что строки начинается с 0.
Если передать длину в квадратные скобки строки или массива, то всегда вернётся undefined.
Чтобы вернуть последний символ в строке, от длины строки надо отнять 1. Вот так:
let num = 123;
let str = String(num);
console.log(str[str.length - 1]); // вернёт '3'
console.log(str[str.length]); // вернёт undefined
Отвечая на твой вопрос.
Что делает данный код?
Первая строка: сохраняет число 123 в переменную.
Вторая: преобразует значение 123 в строку и так же сохраняет в переменную.
Третья: пишет в консоль четвёртый (если считать начиная с 1) символ переменной str. 4-го символа в переменной str не существует, поэтому возвращается undefined.
const str = '123';
str[0] === '1'
str[1] === '2'
str[2] === '3'
str[3] === undefined
str.length === 3
str[str.length] === undefined
str[str.length - 1] === '3'