<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yet Another Developer</title>
    <description>The latest articles on Forem by Yet Another Developer (@yetanotherdeveloper).</description>
    <link>https://forem.com/yetanotherdeveloper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F859438%2Fa3349cfc-cf8d-4189-8bf1-301d065592ea.png</url>
      <title>Forem: Yet Another Developer</title>
      <link>https://forem.com/yetanotherdeveloper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/yetanotherdeveloper"/>
    <language>en</language>
    <item>
      <title>Customise Your Terminal Like You Deserve</title>
      <dc:creator>Yet Another Developer</dc:creator>
      <pubDate>Thu, 12 May 2022 10:51:12 +0000</pubDate>
      <link>https://forem.com/yetanotherdeveloper/customise-your-terminal-like-you-deserve-540k</link>
      <guid>https://forem.com/yetanotherdeveloper/customise-your-terminal-like-you-deserve-540k</guid>
      <description>&lt;p&gt;If You Use Terminal for any reason then you might find find it boring and awful. In Ubuntu the default shell is &lt;code&gt;bash&lt;/code&gt; which is &lt;strong&gt;OK&lt;/strong&gt; to do your every work but you can be much &lt;strong&gt;productive&lt;/strong&gt; with the help of a good customised terminal. Follow along this blog and your terminal will be like This.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dw2uBg05--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652261496483/2yehOM1a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dw2uBg05--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652261496483/2yehOM1a9.png" alt="My Terminal Looks" width="880" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If You Look At the Image, this &lt;strong&gt;Terminal&lt;/strong&gt; is like the one you &lt;strong&gt;&lt;em&gt;always&lt;/em&gt;&lt;/strong&gt; wanted. This is not just only &lt;strong&gt;visually appealing&lt;/strong&gt; but can boost your &lt;strong&gt;productivity&lt;/strong&gt; much more.&lt;/p&gt;

&lt;p&gt;It has many features, some of them are listed here&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Colourful Prompt with Icons&lt;/li&gt;
&lt;li&gt;Many Themes to choose from&lt;/li&gt;
&lt;li&gt;Customiseable shorthand commands&lt;/li&gt;
&lt;li&gt;Autosuggestion through your command history&lt;/li&gt;
&lt;li&gt;Selectable prompt for everything&lt;/li&gt;
&lt;li&gt;And Much More!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With This you will also learn some &lt;strong&gt;quick terminal tricks!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So Lets get started.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Shell
&lt;/h1&gt;

&lt;p&gt;We are going to use the &lt;code&gt;zsh&lt;/code&gt; shell with &lt;strong&gt;"Oh My ZSH!"&lt;/strong&gt; Configuration. It is available for WSL (Windows Subsystem for Linux) and Linux. It is the default shell for Mac OS. You Can also install it on default windows but that is little bit tricky so I will not cover it here. (May be I will do in Future)&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation on Ubuntu
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;(Same command on any other non-ubuntu distro, except the package manager)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To Install &lt;code&gt;zsh&lt;/code&gt; run, Open Up your terminal and type these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# First Install/update some required packages&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update  &lt;span class="c"&gt;# for ubuntu based distos only&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;curl git &lt;span class="c"&gt;# needed for installation&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;zsh  &lt;span class="c"&gt;# install the actual shell&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you need to run the installation script for &lt;strong&gt;"Oh My ZSH!"&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# run this in your linux distro/ MacOS&lt;/span&gt;
sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will setup the shell for you. It will ask if you want to change the default terminal. Just Enter your password and continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you couldn't change shell
&lt;/h2&gt;

&lt;p&gt;If for some reason you can't change your shell, follow these steps:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;where zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You May Find Multiple paths like &lt;code&gt;/usr/bin/zsh&lt;/code&gt; and &lt;code&gt;/bin/zsh&lt;/code&gt;, you can use anyone them. Then run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;chsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enter your password, then enter the path you got previously.&lt;/p&gt;

&lt;p&gt;Now once your zsh is setup, Reboot your PC so that the shell can change in next boot up.&lt;/p&gt;

&lt;h1&gt;
  
  
  Installing A Theme
&lt;/h1&gt;

&lt;p&gt;150 themes come preinstalled with &lt;code&gt;zsh&lt;/code&gt;. You can check them &lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Themes"&gt;here&lt;/a&gt;. You May Find Your Theme there but I will show you one of the best theme.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Powerlevel10k theme
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installing Required Font
&lt;/h3&gt;

&lt;p&gt;You Need to install some font to make the icons work. So download and install these&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf"&gt;MesloLGS NF Regular.ttf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf"&gt;MesloLGS NF Bold.ttf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf"&gt;MesloLGS NF Italic.ttf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf"&gt;MesloLGS NF Bold Italic.ttf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After Download, Open Your Files and Double Click to Install them. Then Change Your Terminal Font. (&lt;a href="https://github.com/romkatv/powerlevel10k#meslo-nerd-font-patched-for-powerlevel10k"&gt;Instructions&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Change Your Theme
&lt;/h3&gt;

&lt;p&gt;Now You need to copy the &lt;strong&gt;Powerlevel10k&lt;/strong&gt; guthub repo first. Run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--depth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 https://github.com/romkatv/powerlevel10k.git &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="p"&gt;/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/themes/powerlevel10k
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that Open your home folder and open &lt;code&gt;.zshrc&lt;/code&gt; file in an text editor. In that file you would see and entry called &lt;code&gt;ZSH_THEME&lt;/code&gt;, add an &lt;code&gt;#&lt;/code&gt; at beginning of that line and paste this line below that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"powerlevel10k/powerlevel10k"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1MxTX6Kj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652329735519/HK5Nvr0X8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1MxTX6Kj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652329735519/HK5Nvr0X8.png" alt="Changing the ZSH Theme" width="880" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now Save the file and Run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;exec &lt;/span&gt;zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now it will open a menu asking some questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customising Your Terminal
&lt;/h2&gt;

&lt;p&gt;You will get the p10k prompt after changing your theme. If you want change your settings later then you would need to run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;p10k configure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(&lt;strong&gt;If it says &lt;code&gt;p10k not found&lt;/code&gt; then change your theme and try again&lt;/strong&gt;)&lt;/p&gt;

&lt;p&gt;You Firstly It will ask you some questions to assure your font is correct.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_5Kvqg0j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652329876899/YDypR4_6v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_5Kvqg0j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652329876899/YDypR4_6v.png" alt="Asking Font Questions" width="880" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(If you can't see the correct icons try checking your terminal font settings.)&lt;/p&gt;

&lt;p&gt;If you can see the correct icons then press &lt;code&gt;y&lt;/code&gt; for 3-4 questions .&lt;/p&gt;

&lt;p&gt;Now it will ask about the style choice of your terminal. &lt;strong&gt;Choose Whatever you like&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4IZ38rUx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652329948677/_8c8fODzdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4IZ38rUx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652329948677/_8c8fODzdn.png" alt="Asking for Prompt Style" width="880" height="759"&gt;&lt;/a&gt;&lt;br&gt;
I Like the Classic so i will press &lt;code&gt;2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Choose Everything According to your need.&lt;/p&gt;

&lt;p&gt;Finally It will ask you  about Instant Prompt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zAqsE680--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652330365450/8OXmVb9C6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zAqsE680--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652330365450/8OXmVb9C6.png" alt="Instant Prompt.png" width="880" height="759"&gt;&lt;/a&gt;&lt;br&gt;
 Choose &lt;code&gt;versbose&lt;/code&gt; by pressing 1. It will write settings automatically. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IAe7qt3h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652330500602/BYSy3q9Hu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IAe7qt3h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652330500602/BYSy3q9Hu.png" alt="Rewrite Prompt.png" width="880" height="759"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Also say yes in rewrite prompt if you are re-configuring.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now You Have a beautiful terminal like mine.&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Quick Terminal Shorthand Commands
&lt;/h1&gt;

&lt;p&gt;You May want to have shorthand commands for some really long commands. You can make your custom commands too.&lt;/p&gt;
&lt;h2&gt;
  
  
  Using Alias Commands
&lt;/h2&gt;

&lt;p&gt;If You Have a command which doesn't require arguments in between then you may use alias. &lt;/p&gt;

&lt;p&gt;Open Your &lt;code&gt;.zshrc&lt;/code&gt; file in text editor. Then Add This Line at last and save.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"clear"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I am used to &lt;code&gt;cls&lt;/code&gt; command in windows so I use it in linux too.&lt;/p&gt;

&lt;p&gt;Now restart your terminal or type &lt;code&gt;exec zsh&lt;/code&gt;, then type &lt;code&gt;cls&lt;/code&gt; and your terminal will be cleared! You can add as many alias as you want. Like add&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;la&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ls -A"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now using &lt;code&gt;la&lt;/code&gt; you can list your hidden files too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Commands with arguments
&lt;/h2&gt;

&lt;p&gt;When I use nodejs, I feel that &lt;code&gt;npm run dev&lt;/code&gt; is a very long command. So What I Can do is added this to my &lt;code&gt;.zshrc&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nr&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        npm run &lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now I Can use &lt;code&gt;nr dev&lt;/code&gt; instead. You Can Learn More about these &lt;a href="https://opensource.com/article/20/6/bash-functions"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You Can Use these as you want.&lt;/p&gt;

&lt;h1&gt;
  
  
  ZSH Autosuggestion
&lt;/h1&gt;

&lt;p&gt;You can Install Many Plugins for ZSH. &lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins"&gt;Here&lt;/a&gt; is the List of pre-installed plugins.&lt;br&gt;
git plugin is preconfigured as you can see here&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZgqOKA6n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652332226866/9aCrNI_GU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZgqOKA6n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652332226866/9aCrNI_GU.png" alt="Git Plugin.png" width="880" height="652"&gt;&lt;/a&gt;&lt;br&gt;
But Now I am going to install the autosuggestion plugin. Install it through git by running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="p"&gt;~/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/plugins/zsh-autosuggestions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then find the line &lt;code&gt;plugins=(git)&lt;/code&gt; and change that line like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;
         git
         zsh-autosuggestions
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now restart (&lt;code&gt;exec zsh&lt;/code&gt;) and you will have auto suggestions.&lt;/p&gt;




&lt;p&gt;Hope You Liked My Post, If you did then please comment your feedback.&lt;/p&gt;

&lt;p&gt;Till then Bye. 👋&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Some Unknown Operators in JavaScript</title>
      <dc:creator>Yet Another Developer</dc:creator>
      <pubDate>Sun, 08 May 2022 13:23:06 +0000</pubDate>
      <link>https://forem.com/yetanotherdeveloper/some-unknown-operators-in-javascript-2joj</link>
      <guid>https://forem.com/yetanotherdeveloper/some-unknown-operators-in-javascript-2joj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to Javascript Operators
&lt;/h2&gt;

&lt;p&gt;Javascript is a Very Popular Language due to its beauty and ease of use. It is easy to get started with javascript. But it is very difficult to master the language. For Example You don't know all of the JS operators. Do you?&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Operators
&lt;/h2&gt;

&lt;p&gt;There are many types of operators in Javascript.&lt;br&gt;
According to &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators"&gt;MDN Web Docs&lt;/a&gt; Those are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assignment operators&lt;/li&gt;
&lt;li&gt;Comparison operators&lt;/li&gt;
&lt;li&gt;Arithmetic operators&lt;/li&gt;
&lt;li&gt;Bitwise operators&lt;/li&gt;
&lt;li&gt;Logical operators&lt;/li&gt;
&lt;li&gt;String operators&lt;/li&gt;
&lt;li&gt;Conditional/Ternary operator&lt;/li&gt;
&lt;li&gt;Comma operator&lt;/li&gt;
&lt;li&gt;Unary operators&lt;/li&gt;
&lt;li&gt;Relational operators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you know Most of them, So I will tell you about the most unknown operators.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Binary Shift Operators
&lt;/h3&gt;

&lt;p&gt;If You have ever coded in &lt;code&gt;C/C++&lt;/code&gt; then you are likely you have used or at least heard about binary shift operators.&lt;/p&gt;

&lt;p&gt;Binary Shift Operators are used while dealing with &lt;a href="https://en.wikipedia.org/wiki/Binary_number"&gt;Binary Numbering System&lt;/a&gt;. May be that is the reason you didn't knew about existence of these operators. All&lt;/p&gt;

&lt;p&gt;These Operators also exists in Javascript. These are Left Shift (&lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt;), Sign-propagating Right Shift (&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;) and Zero-fill Right Shift (&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;) Operators in JS.&lt;/p&gt;
&lt;h4&gt;
  
  
  Left Shift (&lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt;)
&lt;/h4&gt;

&lt;p&gt;Lets Take A Number Like 212 for Example.&lt;br&gt;&lt;br&gt;
Javascript stores numbers in 64 bits.&lt;br&gt;
Bitwise Operators use 32 bits.&lt;br&gt;
😅 &lt;em&gt;Maybe Taking 32 Bits is Not An Good Idea. So Lets Just Work With 16 Bits&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;212&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0000&lt;/span&gt; &lt;span class="mi"&gt;0000&lt;/span&gt; &lt;span class="mi"&gt;1101&lt;/span&gt; &lt;span class="mi"&gt;0100&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if We Do &lt;code&gt;212 &amp;lt;&amp;lt; 1&lt;/code&gt; Then it will shift the &lt;code&gt;11010100&lt;/code&gt; towards left by an adding an &lt;code&gt;0&lt;/code&gt; at last. So It Will be &lt;code&gt;0000 0001 1010 1000&lt;/code&gt; which is 424.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;212&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//Prints 424&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//It Prints 492&lt;/span&gt;
&lt;span class="cm"&gt;/* You Can Try it Now in Your Browser's Developer Console */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Sign-propagating Right Shift (&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;)
&lt;/h4&gt;

&lt;p&gt;It works same as the previous one but it shifts the bits towards right.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;212&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 212 = 0000 0000 1101 0100&lt;/span&gt;
&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 0000 0000 0110 1010 [106]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 106&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;343&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//85 works like this too.&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;132&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//-33&lt;/span&gt;
&lt;span class="cm"&gt;/*it keeps the sign, for which it is called "sign-propagating"*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Zero-fill Right Shift (&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;)
&lt;/h4&gt;

&lt;p&gt;It is same as Sign-propagating Right Shift only difference being that it also shifts the sign bit. For that reason it works same in positive number but gives different result in negative numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;343&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//85 works same&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;132&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//1073741791 it doesn't work same as &amp;gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You Can Read More About it at &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators#bitwise_shift_operators"&gt;MDN Docs&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Binary Bitwise Operators
&lt;/h3&gt;

&lt;p&gt;Again These Operator is used in Binary Calculations. We Have Bitwise AND (&lt;code&gt;&amp;amp;&lt;/code&gt;), Bitwise OR (&lt;code&gt;|&lt;/code&gt;) and Bitwise XOR (&lt;code&gt;^&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;These all calculates the bits at each place of the given number.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;0000&lt;/span&gt; &lt;span class="mi"&gt;0001&lt;/span&gt; &lt;span class="mi"&gt;0011&lt;/span&gt; &lt;span class="mi"&gt;0100&lt;/span&gt;
&lt;span class="mi"&gt;0000&lt;/span&gt; &lt;span class="mi"&gt;0100&lt;/span&gt; &lt;span class="mi"&gt;0010&lt;/span&gt; &lt;span class="mi"&gt;1001&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Top Digit and The Bottom digit at same place is taken. And Calculated According to the Operator. These follows the boolean algebra rules.&lt;/p&gt;

&lt;p&gt;Like For AND (&lt;code&gt;&amp;amp;&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For OR (&lt;code&gt;|&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For XOR (&lt;code&gt;^&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After These Calculations we get :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//1111&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//1001&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1111 &amp;amp; 1001 = 1001 (9)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1111 | 1001 = 1111 (15)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1111 ^ 1001 = 0110 (6)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Bitwise Not Operator
&lt;/h3&gt;

&lt;p&gt;Bitwise Not Operator (&lt;code&gt;~&lt;/code&gt;) Changes the &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt; and vice-versa for any given number. It Changes all 32 bits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//1100&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//(-13)&lt;/span&gt;
&lt;span class="cm"&gt;/*
You Expected 1100 to be 0011 but after altering all 32 bits we get
1111 1111 ... 1111 0011
which is -13
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;All Of These Unknown Operators come From Binary System. So It is a good excuse to learn binary at this moment. Because binary is the thing that makes the computers possible.&lt;/p&gt;

&lt;p&gt;Hope You Liked My First Blog Post.&lt;br&gt;&lt;br&gt;
Will See You Later.&lt;br&gt;&lt;br&gt;
Bye 👋&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
