Немного критики:
В переводе документации, к сожалению, много корявостей, что немного затрудняет понимание материала
Оригинал:
The key for each operation is a string with its name prefixed by two underscores, '__'; for instance, the key for operation "add" is the string "__add".
Перевод:
Ключ каждой операции представляет из себя строку из имени и двух нижних подчеркиваний перед ним. Для экземпляра – ключом операции “add” будет строка "__add".
Еще хуже то, что перевод может быть и вовсе ошибочным
Оригинал:
You can replace the metatable of tables through the setmetatable function. You cannot change the metatable of other types from Lua (except using the debug library); you must use the C API for that.
Хотя я не говорю по-английски, но смысл сей фразы мне полностью ясен.
Перевод:
Вы можете заменить метатаблицу с помощью функции setmetatable. Вы не можете изменить метатаблицу другим способом (of other types – других типов???) (за исключением случаев использования отладочной библиотеки), для этого требуется воспользоваться C API.
Здесь переводчик ошибся, поэтому фраза теряет смысл