The whole subject is a bit too complicated and a bit too deep for a short ELI5, but I'll give a stab at the gist of it.

The reason why computers work (at least in the vein of your question) is very similar to the reason why we have language -- written, spoken, etc.  

What you're reading right at this very moment is a complex system (language) simplified to symbols on the screen.  The very fact that you can read these words and attain meaning from them means that each sentence, each word, and each letter represent a sort of code that you can understand.  

If we take an apple for example, there are many other ways to say that in different languages.  Manzana. Pomme.  Apfel.  And so on. Codes -- some symbol maps to some concept.

In the context of computers, well, they can only "understand" binary.  Ones and zeros. On and off.  Well, that's okay, because we can map those ones and zeros to codes that we (humans) care about.  Like 101010111 could represent "apple" if we wanted it to.  

So we build these physical circuits that either have power or don't (on and off) and we can abstract that to 1's (power flowing through that circuit) and 0's (no power flowing through it).  This way, we can build physical chips that give us basic building blocks (basic instructions it can do) that we can leverage in order to ultimately make programs, display stuff, play sounds, etc.  And the way we communicate that to the computer is via the language it can understand, binary.

In other words, in a basic sense, we can pass the processor binary, and it should be able to interpret that as a command.  The length of the binary, and what it should contain can vary from chip to chip.  But lets say our basic chip can do basic math.  We might pass it a binary number: 0001001000110100  but it might be able to slice it up as 0001 | 0010 | 0011 | 0100 -- so the first four, 0001, might map to an "add" command.  The next four, 0010, might map to a memory location that holds a number.  The third group of four might be the number to add it to.  The last group might be where to put it.  Using variables, it might look like: 

c = a + b.  Where "c" is 0100, "a" is 0010, "b" is 0011, and the "+" (addition operator) is 0001.

From there, those basic instructions, we can layer abstractions.  If I tell you to take out the trash, that's a pretty basic statement.  If I were to detail all the steps needed to do that, it would get a lot longer -- take the lid off the can, pull the bag up, tie the bag, go to the big garbage can, open the lid, put the trash in.  Right?  Well, if I tell you to take out the trash, it rolls up all those sub actions needed to do the task into one simple command.

In programming, it's not all that different.  We layer abstractions to a point where we can call immense functionality with relatively little code.  Some of that code might control the video signal being sent to the screen.  Some of that code might control the logic behind an app or a game.  All of the code though, is getting turned into 1's and 0's and processed by your cpu in order to make the computer do what is asked.  

If you want to learn more, I highly recommend [Code by Charles Petzold](_URL_0_) for a much more in depth but still layman friendly explanation of all this.
කෙටි ELI5 සඳහා සම්පූර්ණ විෂයය තරමක් සංකීර්ණ හා තරමක් ගැඹුරු ය, නමුත් මම එහි සාරාංශයට පිහියක් දෙන්නම්. පරිගණක ක්‍රියා කිරීමට හේතුව (අවම වශයෙන් ඔබේ ප්‍රශ්නයේ නහරය තුළ) අපට භාෂාවක් තිබීමට බොහෝ දුරට සමාන වේ -- ලිඛිත, කථන, යනාදිය. ඔබ මේ මොහොතේ කියවන දේ සංකීර්ණ පද්ධතියකි (භාෂාව) තිරය මත සංකේත වලට සරල කර ඇත. ඔබට මෙම වචන කියවා ඒවායින් අර්ථයක් ලබා ගත හැකිය යන කාරණයෙන් අදහස් වන්නේ සෑම වාක්‍යයක්ම, සෑම වචනයක්ම සහ සෑම අකුරක්ම ඔබට තේරුම් ගත හැකි කේතයක් නියෝජනය කරන බවයි. උදාහරණයක් විදියට අපි ඇපල් ගෙඩියක් ගත්තොත් විවිධ භාෂාවලින් එහෙම කියන්න තවත් බොහෝ ක්‍රම තියෙනවා. මංසානා. පොම්මේ. අප්ෆෙල්. සහ යනාදි. කේත -- යම් සංකල්පයකට සමහර සංකේත සිතියම්. පරිගණක සන්දර්භය තුළ, හොඳින්, ඔවුන් පමණක් ද්විමය &quot;තේරුම්&quot; හැක. එක සහ බිංදු. ඔන් සහ ඕෆ්. හොඳයි, ඒක කමක් නෑ, මොකද අපිට ඒ ඒවා සහ බිංදු අපි (මිනිසුන්) සැලකිලිමත් වෙන කේත වලට සිතියම්ගත කරන්න පුළුවන්. 101010111 මෙන් අපට අවශ්‍ය නම් &quot;ඇපල්&quot; නියෝජනය කළ හැකිය. එබැවින් අපි මෙම භෞතික පරිපථ බලය ඇති හෝ නොමැති (සක්‍රිය සහ අක්‍රිය) ගොඩනඟමු, අපට එය 1 (එම පරිපථය හරහා ගලා යන බලය) සහ 0 (එය හරහා ගලා නොයන බලය) වෙත වියුක්ත කළ හැකිය. මේ ආකාරයෙන්, අපට මූලික ගොඩනැඟිලි කොටස් (එය කළ හැකි මූලික උපදෙස්) ලබා දෙන භෞතික චිප්ස් ගොඩනගා ගත හැකි අතර ඒවා අවසානයේ වැඩසටහන් සෑදීමට, දේවල් ප්‍රදර්ශනය කිරීමට, ශබ්ද වාදනය කිරීමට යනාදිය උත්තේජනය කළ හැකිය. තවද අප එය පරිගණකයට සන්නිවේදනය කරන ආකාරය වේ. එය තේරුම් ගත හැකි භාෂාව හරහා, ද්විමය. වෙනත් වචන වලින් කිවහොත්, මූලික අර්ථයකින්, අපට ප්‍රොසෙසර ද්විමය සමත් විය හැකි අතර, එය විධානයක් ලෙස අර්ථකථනය කිරීමට හැකි විය යුතුය. ද්විමය දිග, සහ එහි අඩංගු විය යුතු දේ චිපයෙන් චිපයට වෙනස් විය හැක. නමුත් අපගේ මූලික චිපයට මූලික ගණිතය කළ හැකි යැයි කියමු. අපි එය ද්විමය අංකයක් ලබා දිය හැක: 0001001000110100 නමුත් එය 0001 ලෙස කපා හැරීමට හැකි වනු ඇත | 0010 | 0011 | 0100 -- එබැවින් පළමු හතර, 0001, &quot;එකතු කරන්න&quot; විධානයකට සිතියම් ගත කළ හැක. ඊළඟ හතර, 0010, අංකයක් ඇති මතක ස්ථානයකට සිතියම්ගත කළ හැකිය. හතර දෙනෙකුගෙන් යුත් තුන්වන කණ්ඩායම එය එකතු කළ යුතු අංකය විය හැකිය. අවසාන කණ්ඩායම එය තැබිය යුතු ස්ථානය විය හැකිය. විචල්‍යයන් භාවිතයෙන්, එය පෙනෙන්නේ: c = a + b. එහිදී &quot;c&quot; යනු 0100, &quot;a&quot; යනු 0010, &quot;b&quot; යනු 0011, සහ &quot;+&quot; (එකතු කිරීමේ ක්‍රියාකරු) 0001 වේ. එතැන් සිට, එම මූලික උපදෙස්, අපට වියුක්තයන් ස්ථර කළ හැක. කුණු කූඩය ඉවත් කරන ලෙස මම ඔබට පැවසුවහොත්, එය ඉතා මූලික ප්‍රකාශයකි. මම ඒ සඳහා අවශ්‍ය සියලුම පියවර විස්තර කළහොත්, එය තවත් දිගු වනු ඇත -- කෑන් එකෙන් පියන ඉවත් කරන්න, බෑගය ඉහළට අදින්න, බෑගය ගැට ගසන්න, විශාල කුණු කූඩයට යන්න, පියන විවෘත කරන්න, තබන්න. කුණු කූඩයට. හරිද? හොඳයි, මම ඔබට කුණු කූඩය ඉවත් කිරීමට කීවොත්, එය කාර්යය කිරීමට අවශ්‍ය සියලුම උප ක්‍රියා එක් සරල විධානයකට පෙරළේ. ක්‍රමලේඛනයේදී, සියල්ල වෙනස් නොවේ. අපි සාපේක්ෂ වශයෙන් කුඩා කේතයක් සමඟ අතිවිශාල ක්‍රියාකාරීත්වයක් ලෙස හැඳින්විය හැකි ස්ථානයකට වියුක්තයන් ස්ථර කරමු. එම කේතයෙන් සමහරක් තිරය වෙත යවන වීඩියෝ සංඥා පාලනය කළ හැක. එම කේතයෙන් සමහරක් යෙදුමක් හෝ ක්‍රීඩාවක් පිටුපස ඇති තර්කනය පාලනය කළ හැකිය. කෙසේ වෙතත්, සියලුම කේතයන් 1 සහ 0 බවට පත් කර පරිගණකය ඉල්ලා සිටින දේ කිරීමට සැලැස්වීම සඳහා ඔබේ cpu මඟින් සකසනු ලැබේ. ඔබට වැඩි විස්තර දැන ගැනීමට අවශ්‍ය නම්, මේ සියල්ල ගැන වඩාත් ගැඹුරින් නමුත් තවමත් ගිහියන්ට හිතකාමී පැහැදිලි කිරීමක් සඳහා මම [Code by Charles Petzold](_URL_0_) නිර්දේශ කරමි.