diff --git a/lua.html.markdown b/lua.html.markdown
index a755e6e1..dbd91585 100644
--- a/lua.html.markdown
+++ b/lua.html.markdown
@@ -13,70 +13,168 @@ filename: learnlua.lua
multi-line comment.
--]]
+print("Hello, Lua")
+
----------------------------------------------------
--- 1. Variables and flow control.
+---- Variables, Data Types, and some operations ----
----------------------------------------------------
-num = 42 -- Numbers can be integer or floating point.
+-- integer and float values --
+num1 = 42
+num2 = 10.5
-s = 'walternate' -- Immutable strings like Python.
-t = "double-quotes are also fine"
-u = [[ Double brackets
- start and end
- multi-line strings.]]
+-- Mathematical Operations :
+print(num1 + num2) -- Addition
+print(num1 - num2) -- Subtraction
+print(num1 * num2) -- Multiplication
+print(num1 / num2) -- Division
+print(num1 // num2) -- floor Division (round down to the closest integer)
+print(num1 % num2) -- Modulus (gives the remainder of num1/num2)
+print(num1 ^ num2) -- Exponentiation
+
+
+-- string values --
+str1 = 'single quotes string'
+str2 = "double quotes string"
+str3 = [[ multi
+ line
+ string]]
+
+-- string concatenation is done using two dots :
+print(str1 .. str2)
+
+
+-- nil values (the absence of a value) --
+-- an undefined variable returns nil
+print(undefined_variable)
+-- a previously defined variable can be undefined with nil :
+t = 4
t = nil -- Undefines t; Lua has garbage collection.
--- Blocks are denoted with keywords like do/end:
+
+-- Boolean values --
+a = true
+b = false
+
+-- note : other than writing false, you can write nil to represent a false value, you can't however write 0 or '' like in other languages.
+
+-- boolean operations :
+print(not a)
+print(a and b)
+print(a or b)
+
+
+-- Variables are global by default
+-- to make them local you write :
+local variable_name = variable_value
+
+
+----------------------------------------------------
+------------ Standard Input and Output -------------
+----------------------------------------------------
+
+-- Input :
+io.read() -- allow the user to input data through the console
+
+-- example :
+print("write your name :")
+name = io.read() -- takes the user input and stores it in a variable named "name"
+print("Your name is " .. name)
+
+-- Output :
+--[[
+The io.write() function is used to print text or data to the standard output (usually the console) without automatically adding a newline at the end. Unlike print()
+]]
+
+io.write("Hello, Lua")
+
+-- you can add a new line with \n if you want
+io.write("Hello, Lua\n")
+-- or a tab with -t, or a backslash (\) with \\
+
+
+----------------------------------------------------
+------------------ If Statements -------------------
+----------------------------------------------------
+-- Blocks of code are enclosed between key words like
+-- then/end or do/end
+
+-- syntax :
+-- if (condition is true) then (do this) end
+
+-- if (condition is true) then (do this)
+-- elseif (this condition is true) then (do this instead)
+-- else (if no condition is true, do this) end
+
+--example :
+if true then
+ print('something')
+end
+
+if false then
+ print('nothing')
+end
+
+-- comparison operations :
+a == b -- Equality
+a ~= b -- Inequality
+a > b -- greater than
+a >= -- greater or equal to
+a < b -- less than
+a >= -- less or equal to
+-- alongside the (not, and, or) operations we learned earlier
+
+----------------------------------------------------
+------------------- while loops --------------------
+----------------------------------------------------
+num = 0
+
while num < 50 do
- num = num + 1 -- No ++ or += type operators.
+ print(num)
+ num = num + 1
end
--- If clauses:
-if num > 40 then
- print('over 40')
-elseif s ~= 'walternate' then -- ~= is not equals.
- -- Equality check is == like Python; ok for strs.
- io.write('not over 40\n') -- Defaults to stdout.
-else
- -- Variables are global by default.
- thisIsGlobal = 5 -- Camel case is common.
+-- note : this language doesn't have ++ or -- or += or -= operations like in some other languages.
- -- How to make a variable local:
- local line = io.read() -- Reads next stdin line.
+----------------------------------------------------
+-------------------- for loops ---------------------
+----------------------------------------------------
+-- syntax :
+-- for (variable_name) = (start_value , end_value , step) do (something) end
+-- note : both the start_value and end_value are included in the range.
+-- note : the step value is optional, and it's default value is +1
- -- String concatenation uses the .. operator:
- print('Winter is coming, ' .. line)
+-- examples :
+for i = 1, 10 do
+ print(i)
end
--- Undefined variables return nil.
--- This is not an error:
-foo = anUnknownVariable -- Now foo = nil.
-
-aBoolValue = false
-
--- Only nil and false are falsy; 0 and '' are true!
-if not aBoolValue then print('it was false') end
-
--- 'or' and 'and' are short-circuited.
--- This is similar to the a?b:c operator in C/js:
-ans = aBoolValue and 'yes' or 'no' --> 'no'
-
-karlSum = 0
-for i = 1, 100 do -- The range includes both ends.
- karlSum = karlSum + i
+for j = 10, 1, -1 do
+ print(j)
end
--- Use "100, 1, -1" as the range to count down:
-fredSum = 0
-for j = 100, 1, -1 do fredSum = fredSum + j end
+for j = 10, 1, -2 do
+ print(j)
+end
--- In general, the range is begin, end[, step].
+----------------------------------------------------
+---------------- repeat until loops ----------------
+----------------------------------------------------
--- Another loop construct:
+--[[The repeat, until loop in Lua is similar to the do, while loop in other languages. It repeatedly executes a block of code until a specified condition becomes true. Unlike the while loop, the repeat ... until loop will always execute at least once, since the condition is checked after each iteration.]]
+
+-- syntax :
repeat
- print('the way of the future')
- num = num - 1
-until num == 0
+ -- code to execute
+until condition
+
+-- example
+k = 10
+
+repeat
+ print(k)
+ k = k - 1
+until k == 0
----------------------------------------------------