Читаем про изменяемые и неизменяемые объекты в питоне.
Если коротко, когда ты делаешь a = b, ты не копируешь объект. Ты просто создаёшь новую ссылку на него.
Достаточно проверить так:
print(languages is new_list) # True
Если объект изменяемый, то изменения будут видны по любой ссылке, что логично:
a = [1, 2, 3]
b = a # b ссылается на тот же список
b.append(4) # список изменили
Если объект неизменяемый, то это не так заметно, потому что ссылка заменяется на ссылку на новый объект:
a = 5
b = a # b ссылается на 5
a += 1 # a = a + 1 т.е. a = 6 - a теперь ссылается на новый объект 6, b - по прежнему на 5.
Если нужна независимая копия списка, словаря или иного изменяемого объекта - делай её явно.