<?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>DEV Community: Alimam Miya</title>
    <description>The latest articles on DEV Community by Alimam Miya (@alimammiya).</description>
    <link>https://dev.to/alimammiya</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%2F510417%2Fc00e284b-501a-489b-82ff-dcabb17cc8e2.png</url>
      <title>DEV Community: Alimam Miya</title>
      <link>https://dev.to/alimammiya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alimammiya"/>
    <language>en</language>
    <item>
      <title>Top 3 Moral Stories in Hindi : एक सीख भरा सफर</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Sun, 14 Jan 2024 11:04:01 +0000</pubDate>
      <link>https://dev.to/alimammiya/top-3-moral-stories-in-hindi-ek-siikh-bhraa-sphr-3bhj</link>
      <guid>https://dev.to/alimammiya/top-3-moral-stories-in-hindi-ek-siikh-bhraa-sphr-3bhj</guid>
      <description>&lt;p&gt;नैतिकता और शिक्षा का महत्व हमारे समाज में अत्यधिक है। नैतिक कहानियाँ हमें सीख देने वाली महत्वपूर्ण साधन हैं जो हमें सही और गलत की पहचान करने, समझदारी से निर्णय लेने, और अच्छे संबंध बनाए रखने की कला सिखाती हैं। इस ब्लॉग में, हम आपको कुछ ऐसी &lt;a href="https://usemynotes.com/top-10-moral-stories-in-hindi/"&gt;Moral Stories in Hindi&lt;/a&gt; साझा करेंगे जो आपको एक सीख भरे सफर पर ले जाएंगी।&lt;/p&gt;

&lt;h2&gt;
  
  
  सच्चे मित्र: Moral Stories in Hindi
&lt;/h2&gt;

&lt;p&gt;कहानी एक गाँव के दो दोस्तों की है, जो हमेशा एक-दूसरे के साथ खड़े रहते थे। एक दिन, एक दोस्त ने दूसरे का छोटा सा चोरी कर लिया। जब पहला दोस्त यह देखता है, तो उसकी नैतिकता का सच्चा परीक्षण होता है। उसने अपने दोस्त को सीधे रास्ते पर लाने का निर्णय लिया, जो उसकी सच्ची मित्रता को बचाने में सफल हुआ। इस कहानी से हमें यह सिखने को मिलता है कि सच्चे मित्रता कभी छोटी चीजों के लिए भी हमें सीधे रास्ते पर चलना चाहिए।&lt;/p&gt;

&lt;h2&gt;
  
  
  ईमानदारी का मूल्य: Moral Stories in Hindi
&lt;/h2&gt;

&lt;p&gt;एक छोटे से गाँव के एक छोटे से लड़के की कहानी है, जो बहुत ईमानदार था। एक दिन, उसे अपने दोस्त ने लालच में धोखाधड़ी में शामिल होने के लिए प्रेरित किया। लेकिन छोटे लड़के ने उसे मना कर दिया और ईमानदारी की राह पर चलने का निर्णय लिया। इस कहानी से हमें यह सिखने को मिलता है कि ईमानदारी हमारे जीवन में किसी भी समय बहुत मूल्यवान हो सकती है।&lt;/p&gt;

&lt;h2&gt;
  
  
  परोपकारी दुनिया: Moral Stories in Hindi
&lt;/h2&gt;

&lt;p&gt;एक समझदार राजा थे जो हमेशा अपने प्रजा की भलाइयों के लिए काम करते थे। उन्होंने एक दिन देखा कि एक कुत्ता एक बुरी बीमारी से पीड़ित है। राजा ने उसे अपने दरबार में ले आए और उसे ठीक करने के लिए विशेषज्ञ चिकित्सक को बुलवाया। इससे पूरे राज्य में एक सहानुभूति का वातावरण बन गया और लोगों में एक-दूसरे के प्रति प्रेम बढ़ गया। इस कहानी से हमें यह सिखने को मिलता है कि हमें अपने समाज में परोपकार करना चाहिए और दूसरों की मदद करने में नहीं हिचकिचाना चाहिए।&lt;/p&gt;

&lt;h2&gt;
  
  
  समापन:
&lt;/h2&gt;

&lt;p&gt;ये कहानियाँ हमें नैतिक शिक्षा और सही मार्गदर्शन करने में सहारा प्रदान करती हैं। इन्हें सुनकर हम अच्छे और सजग नागरिक बनते हैं और अपने आस-पास के समाज को भी सुधारने का संकल्प लेते हैं। नैतिक कहानियों के माध्यम से हम अपने बच्चों और समाज को भी सबक सिखा सकते हैं, ताकि हमारी समृद्धि और तरक्की का मार्ग सही दिशा में हो।&lt;/p&gt;

</description>
      <category>moral</category>
      <category>stories</category>
      <category>hindi</category>
    </item>
    <item>
      <title>A Deep Dive into the Top 10 Toughest Exams in India</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Tue, 22 Aug 2023 16:46:14 +0000</pubDate>
      <link>https://dev.to/alimammiya/a-deep-dive-into-the-top-10-toughest-exams-in-india-ae1</link>
      <guid>https://dev.to/alimammiya/a-deep-dive-into-the-top-10-toughest-exams-in-india-ae1</guid>
      <description>&lt;p&gt;India, known for its academic rigor and competitive spirit, hosts a diverse array of examinations that serve as litmus tests for aspiring individuals across various fields. These exams, often hailed as the toughest in the country, are not merely assessments of knowledge; they are transformative journeys that demand dedication, perseverance, and unyielding determination. In this article, we delve into the realm of academic challenges and explore the top 10 &lt;a href="https://usemynotes.com/top-10-toughest-exams-in-india/"&gt;toughest exams in India&lt;/a&gt;, each a formidable stepping stone toward realizing one's dreams.&lt;/p&gt;

&lt;h2&gt;1. UPSC Civil Services Examination: Leading the Nation&lt;/h2&gt;

&lt;p&gt;The UPSC Civil Services Examination is the pinnacle of administrative prowess, drawing individuals who aspire to lead and transform the nation. Comprising three stages - Preliminary, Main, and Interview - this examination evaluates candidates' knowledge, analytical thinking, and ethical integrity. Aspirants tackle subjects ranging from history and geography to economics and governance, reflecting a holistic understanding of India's intricate fabric.&lt;/p&gt;

&lt;h2&gt;2. Indian Institutes of Technology Joint Entrance Examination (IIT-JEE): Engineering's Challenge&lt;/h2&gt;

&lt;p&gt;The IIT-JEE is the gateway to India's premier engineering institutions, a coveted destination for countless engineering enthusiasts. This exam tests candidates' proficiency in mathematics, physics, and chemistry, emphasizing not just factual knowledge but problem-solving skills. The IIT-JEE's reputation as one of the toughest exams in India stems from its rigorous preparation demands and high competition.&lt;/p&gt;

&lt;h2&gt;3. National Eligibility cum Entrance Test (NEET): Healing Hearts and Minds&lt;/h2&gt;

&lt;p&gt;For those aspiring to pursue medical and dental careers, the NEET exam stands as a monumental hurdle. Testing candidates' knowledge of biology, chemistry, and physics, NEET ensures that only the most knowledgeable and dedicated individuals enter the healthcare domain. The exam's comprehensive syllabus and strict evaluation process contribute to its reputation as a formidable challenge.&lt;/p&gt;

&lt;h2&gt;4. Graduate Aptitude Test in Engineering (GATE): Engineering Eminence&lt;/h2&gt;

&lt;p&gt;The GATE examination evaluates engineering and science graduates for postgraduate programs and public sector employment. Covering a wide range of subjects, GATE assesses candidates' understanding of core concepts, analytical thinking, and problem-solving skills. Its multifaceted nature and high standards make it a sought-after challenge for engineering aspirants.
&lt;/p&gt;

&lt;h2&gt;5. Common Admission Test (CAT): Sculpting Business Leaders
&lt;/h2&gt;

&lt;p&gt;CAT serves as the gateway to India's top business schools, including the prestigious Indian Institutes of Management (IIMs). This exam evaluates candidates' quantitative aptitude, data interpretation, logical reasoning, and verbal proficiency. CAT goes beyond academic prowess, assessing decision-making skills and time management - attributes crucial for successful business leaders.&lt;/p&gt;

&lt;h2&gt;6. All India Institute of Medical Sciences (AIIMS) Entrance Examination: Aspiring Healers' Quest&lt;/h2&gt;

&lt;p&gt;The AIIMS entrance examination holds the key to entering India's premier medical institutions. Candidates are tested on their proficiency in biology, chemistry, and physics, reflecting the holistic knowledge required in the medical field. The rigorous evaluation process ensures that only the most dedicated and knowledgeable individuals become part of the medical community.&lt;/p&gt;

&lt;h2&gt;7. National Institute of Design Entrance Exam (NID): Unleashing Creativity&lt;/h2&gt;

&lt;p&gt;The NID entrance exam is a canvas for artistic minds to showcase their creativity, logical thinking, and innovation. It assesses candidates' ability to think beyond conventions and create designs that blend aesthetics with functionality. NID's reputation as a challenging exam lies in its ability to evaluate both artistic flair and analytical acumen.
&lt;/p&gt;

&lt;h2&gt;8. Xavier Aptitude Test (XAT): Crafting Business Minds&lt;/h2&gt;

&lt;p&gt;XAT evaluates candidates' decision-making abilities, analytical reasoning, and ethical discernment. It's not just about entry into business schools; XAT shapes future business leaders by assessing their capacity to navigate complex scenarios, make informed choices, and exhibit a holistic understanding of management principles.
&lt;/p&gt;

&lt;h2&gt;9. National Defence Academy (NDA) Entrance Examination: Forging Protectors&lt;/h2&gt;

&lt;p&gt;The NDA entrance exam assesses candidates' intellectual acumen, physical fitness, and leadership qualities. It's a challenge that prepares young minds for a career in the Indian armed forces, testing not only their knowledge but also their determination to serve the nation.
&lt;/p&gt;

&lt;h2&gt;10. Common Law Admission Test (CLAT): Gateway to Legal Brilliance&lt;/h2&gt;

&lt;p&gt;Aspiring legal minds face the CLAT examination, a rigorous evaluation of legal aptitude, logical reasoning, and language proficiency. CLAT opens doors to India's esteemed law schools, molding individuals into adept legal thinkers with analytical skills and persuasive communication.&lt;/p&gt;

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

&lt;p&gt;The &lt;strong&gt;toughest exams in India&lt;/strong&gt; embody the nation's quest for excellence and the unyielding spirit of its aspiring youth. These examinations go beyond the boundaries of academia; they are tests of character, perseverance, and dedication. As candidates strive to conquer these challenges, they carve their path towards success, each victory a testament to their mettle. These exams are not just milestones; they are the embodiment of dreams realized, futures shaped, and legacies created.&lt;/p&gt;

</description>
      <category>india</category>
      <category>exam</category>
      <category>blog</category>
    </item>
    <item>
      <title>Explain in 5 Levels of Difficulty: GIT</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Sat, 18 Feb 2023 16:27:29 +0000</pubDate>
      <link>https://dev.to/alimammiya/explain-in-5-levels-of-difficulty-git-3kp0</link>
      <guid>https://dev.to/alimammiya/explain-in-5-levels-of-difficulty-git-3kp0</guid>
      <description>&lt;h2&gt;
  
  
  Level 1 (Easy):
&lt;/h2&gt;

&lt;p&gt;Git is a version control system that helps you keep track of changes to your computer code. It is a tool that is commonly used by software developers to collaborate on projects and maintain a history of changes made to the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 2 (Intermediate):
&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system that was designed to help software developers manage and track changes to their code. It works by creating a repository, which is a collection of files that represent the code base for a project. Developers can make changes to the files in the repository, and Git will track those changes over time.&lt;/p&gt;

&lt;p&gt;Developers can use Git to collaborate on a project, as multiple developers can work on the same code base and merge their changes together. Git also provides tools for managing conflicts that can arise when two or more developers make changes to the same file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 3 (Moderate):
&lt;/h2&gt;

&lt;p&gt;Git is a command-line tool that allows software developers to manage and track changes to their code. Git is a distributed version control system, which means that each developer has a complete copy of the code repository on their local machine. Developers can work on their local copy of the repository, and then use Git to share their changes with other developers.&lt;/p&gt;

&lt;p&gt;Git uses a series of commands to manage changes to the code repository. Developers can use Git to create branches, which are independent copies of the repository that allow them to work on a specific feature or bug fix without affecting the main code base. Developers can also use Git to merge changes from one branch into another, and to resolve conflicts that arise when two or more developers make changes to the same file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 4 (Difficult):
&lt;/h2&gt;

&lt;p&gt;Git is a powerful version control system that allows software developers to manage and track changes to their code. Git uses a distributed architecture, which means that each developer has a complete copy of the code repository on their local machine. This architecture allows developers to work independently on their local copy of the repository, without requiring constant connectivity to a central server.&lt;/p&gt;

&lt;p&gt;Git provides a wide range of tools for managing changes to the code repository. Developers can use Git to create branches, which are independent copies of the repository that allow them to work on a specific feature or bug fix without affecting the main code base. Git also provides tools for merging changes from one branch into another, and for resolving conflicts that arise when two or more developers make changes to the same file.&lt;/p&gt;

&lt;p&gt;Git is also highly customizable, with a wide range of configuration options and plugins available. This makes it a versatile tool that can be adapted to suit the needs of different development workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 5 (Very Difficult):
&lt;/h2&gt;

&lt;p&gt;Git is a complex and powerful version control system that is widely used by software developers around the world. Git uses a distributed architecture, which allows each developer to have a complete copy of the code repository on their local machine. This architecture provides developers with a high degree of flexibility and independence, allowing them to work on their local copy of the repository without requiring constant connectivity to a central server.&lt;/p&gt;

&lt;p&gt;Git provides a wide range of features and tools for managing changes to the code repository. These include the ability to create branches, which are independent copies of the repository that allow developers to work on a specific feature or bug fix without affecting the main code base. Git also provides tools for merging changes from one branch into another, and for resolving conflicts that arise when two or more developers make changes to the same file.&lt;/p&gt;

&lt;p&gt;Git is highly customizable, with a wide range of configuration options and plugins available. This makes it a versatile tool that can be adapted to suit the needs of different development workflows. However, this also means that Git can be difficult to learn and master, especially for developers who are new to version control systems. Git also requires a certain level of technical expertise to set up and configure.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>React Native Installation Guide</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Fri, 27 Jan 2023 18:26:33 +0000</pubDate>
      <link>https://dev.to/alimammiya/react-native-installation-guide-28p1</link>
      <guid>https://dev.to/alimammiya/react-native-installation-guide-28p1</guid>
      <description>&lt;p&gt;React Native is a framework for building mobile applications using JavaScript and React. To get started with developing React Native applications, you will need to install the React Native command-line interface (CLI) and a few other tools. Here's a general guide to installing React Native on your computer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install Node.js and Watchman: React Native requires Node.js and Watchman to be installed on your computer. You can download the latest version of Node.js from the official website and install it. Watchman is a file watching service that can be installed using Homebrew on macOS or chocolatey on Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the React Native CLI: To install the React Native CLI, open a terminal and run the following command: 'npm install -g react-native-cli'&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install a code editor: You will need a code editor to write and edit your React Native code. Some popular options include Visual Studio Code, Atom, and Sublime Text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install Xcode on macOS: If you're developing for iOS, you will need to install Xcode, which is a set of development tools provided by Apple. You can download it from the Mac App Store.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install Android Studio on Windows and Linux: If you're developing for Android, you will need to install Android Studio, which is a set of development tools provided by Google. You can download it from the official website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new React Native project: Once you have all the necessary tools installed, you can create a new React Native project by running the following command in a terminal: 'react-native init MyProject'&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the project on an emulator or device: To run your project on an iOS simulator, use the command 'react-native run-ios'. To run it on an Android emulator, use the command 'react-native run-android'.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a general guide to getting started with React Native development, but keep in mind that the specific installation steps may vary depending on your operating system and the tools you already have installed on your computer.&lt;/p&gt;

&lt;p&gt;It's always a good idea to check the official documentation for the most up-to-date instructions and troubleshooting tips.&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>performance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Cryptography and Network Security course for free</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Sat, 18 Dec 2021 09:44:35 +0000</pubDate>
      <link>https://dev.to/alimammiya/cryptography-and-network-security-course-for-free-2l4n</link>
      <guid>https://dev.to/alimammiya/cryptography-and-network-security-course-for-free-2l4n</guid>
      <description>&lt;p&gt;In this post, we will provide the &lt;a href="https://usemynotes.com/cryptography/"&gt;Cryptography and Network Security Course for Free&lt;/a&gt; from beginner to advance, and you can learn - What you'll learn, the list of Course content, Requirements, Description, and Why learn Cryptography?&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start a career in network security. Become a network security specialist.&lt;/li&gt;
&lt;li&gt;How to become job-ready by understanding how really Cryptography and Network Security work behind the project.&lt;/li&gt;
&lt;li&gt;Cryptography fundamentals: IDS, firewall, encryption techniques, description techniques, PGP encryption, and more.&lt;/li&gt;
&lt;li&gt;How to think and work like a good Network security expert: researching, problem-solving, and, workflows.&lt;/li&gt;
&lt;li&gt;Learn more than advanced levels concept: DSS, MAC, MD5, RSA algorithm, DES algorithm, and more.&lt;/li&gt;
&lt;li&gt;Learn How does PGP encryption works?&lt;/li&gt;
&lt;li&gt;The role of hashing in PGP Encryption and what are the uses of PGP Encryption.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Course content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-cryptography/"&gt;What is Cryptography?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-vpn-and-how-does-it-work/"&gt;What is VPN and How does it work?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-virus-worms-and-trojans/"&gt;What is Computer Virus, Worms and Trojans?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-intrusion-detection-system/"&gt;What is Intrusion Detection System [IDS]?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-firewall-and-its-types/"&gt;What is Firewall and its Types?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-network-address-translation/"&gt;What is Network Address Translation (NAT)?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/computer-network-attacks/"&gt;What is Computer Network Attacks?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-secure-shell/"&gt;What is Secure Shell or (SSH)?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-encryption-and-decryption-techniques/"&gt;What is Encryption and Decryption Techniques?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-pgp-encryption-and-hashing/"&gt;What is PGP Encryption and Hashing?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-ssl-secure-socket-layer/"&gt;What is SSL (Secure Socket Layer)?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-digital-signature-standard/"&gt;What is Digital Signature Standard [DSS]?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/message-authentication-code-mac/"&gt;Message Authentication Code (MAC)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-md5-message-digest-algorithm-5/"&gt;What is MD5 (Message Digest algorithm 5)?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-rsa-algorithm/"&gt;What is RSA Algorithm?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-des-algorithm/"&gt;What is DES Algorithm?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You must have a computer/Laptop or smartphone for work.&lt;/li&gt;
&lt;li&gt;You must have any browser (Chrome, Firefox, etc) to learn our tutorials.&lt;/li&gt;
&lt;li&gt;You must have the basic skill of mathematical problem-solving.&lt;/li&gt;
&lt;li&gt;You must know the basics of the operating system (OS) to learn Network security.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;Have you never known networking on a computer and smart devices before, and thought or say that Cryptography is a good networking course to start with. so you think right&lt;/p&gt;

&lt;p&gt;Maybe you have some good experience in operating systems and networks, but want to learn cryptography and network security course. This is a great networking course for your CV (Curriculum vitae).&lt;/p&gt;

&lt;p&gt;Perhaps you are stuck in a low-paying networking job and want to move to a better, more senior position to learn cryptography and network security, this might help you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why learn Cryptography?
&lt;/h2&gt;

&lt;p&gt;Cryptography is often considered the mother of Operating systems (OS) ​​because many other networks ​​have been based on it.&lt;/p&gt;

&lt;p&gt;Although Cryptography is complex and may be simple, it is one of the most powerful security methods. Given that it was created 32 years ago, it is still heavily used and is generally one of the great, most popular, and most widespread network security methods  ​​in the world.&lt;/p&gt;

&lt;p&gt;Learning Cryptography and network security can really make you stronger at security. &lt;/p&gt;

&lt;p&gt;By learning how things really work "under the hood" and understanding the DES algorithm, RSA algorithm, MD5, and so on, you can create the more efficient algorithm, and get a huge advantage over other algorithms in the process.&lt;/p&gt;

&lt;p&gt;If you want to be a better network security expert, Cryptography is a great way to start learning!&lt;/p&gt;

&lt;p&gt;It does not omit the course details. You'll learn how to write a high-quality algorithm and be an excellent problem solver. This course not only exists as an algorithm in cryptography and network security, but it also includes all the details on the "why" you are doing. At the end of this course, you will be able to fully understand the concepts of cryptography and network security.&lt;/p&gt;

&lt;p&gt;Originally posted on - &lt;a href="https://alimammiya.hashnode.dev/cryptography-and-network-security-course-for-free"&gt;Cryptography and Network Security Course for Free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cryptography</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>security</category>
    </item>
    <item>
      <title>JavaScript Course for free 2022 From Zero to Expert </title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Fri, 03 Dec 2021 05:50:59 +0000</pubDate>
      <link>https://dev.to/alimammiya/javascript-course-for-free-2022-from-zero-to-expert-5bj4</link>
      <guid>https://dev.to/alimammiya/javascript-course-for-free-2022-from-zero-to-expert-5bj4</guid>
      <description>&lt;p&gt;In this course section, we will share with you the &lt;a href="https://usemynotes.com/javascript/"&gt;JavaScript course for free&lt;/a&gt; in 2022: from zero to expert! The modern JavaScript course for everyone! This JavaScript course contains challenges, theory, and Interview questions. So let’s start.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Become an advanced JavaScript developer from scratch.&lt;/li&gt;
&lt;li&gt;How to become job-ready by understanding how JavaScript really works behind the project.&lt;/li&gt;
&lt;li&gt;JavaScript fundamentals: if/else, loops, operators, variables, boolean, arrays,  functions, strings, and objects.&lt;/li&gt;
&lt;li&gt;Modern Object-oriented programming (OOP): Classes, prototypal inheritance, constructors, encapsulation, etc.&lt;/li&gt;
&lt;li&gt;Asynchronous JavaScript: Event loop, promises, and async/await.&lt;/li&gt;
&lt;li&gt;How to think and work like a good developer: researching, problem-solving, and, workflows.&lt;/li&gt;
&lt;li&gt;Modern ES5 and ES2015 from the beginning: arrow functions, spread operator, optional chaining, and destructuring.&lt;/li&gt;
&lt;li&gt;How to architect your code using common patterns and flowcharts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JavaScript Course content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-javascript/"&gt;What is JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-variables-in-javascript/"&gt;What are Variables in JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-data-types-in-javascript/"&gt;What are data types in JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-operators-in-javascript/"&gt;What are Operators in JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-functions-in-javascript/"&gt;What are functions in JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-arrow-function-in-javascript/"&gt;What is arrow function in JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/javascript-conditional-statements/"&gt;JavaScript Conditional Statements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/javascript-switch-statement/"&gt;JavaScript Switch Statement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/loops-in-javascript/"&gt;Loops in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/break-and-continue-in-javascript/"&gt;Break and Continue in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/string-and-methods-in-javascript/"&gt;String and Methods in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/arrays-in-javascript/"&gt;Arrays in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/object-in-javascript/"&gt;Object in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/date-in-javascript/"&gt;Date in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/math-in-javascript/"&gt;Math in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/javascript-popup-boxes/"&gt;JavaScript Popup Boxes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/events-in-javascript/"&gt;Events in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/dom-in-javascript/"&gt;DOM in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/classes-in-javascript/"&gt;Classes in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/inheritance-in-javascript/"&gt;Inheritance in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/difference-between-es5-and-es2015/"&gt;Difference between ES5 and ES2015&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/latest-version-of-ecmascript/"&gt;Latest Version of ECMAScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/promises-in-javascript/"&gt;Promises in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/async-and-await-in-javascript/"&gt;Async and Await in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/destructuring-in-javascript/"&gt;Destructuring in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/javascript-interview-questions-and-answers/"&gt;JavaScript Interview Questions and Answers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No coding experience is required to take this JavaScript course for free! I lead you from beginner to expert level!&lt;/li&gt;
&lt;li&gt;Any computer and operating system (OS) will work — Microsoft Windows, Linux, or macOS. We will set up your code editor for the course.&lt;/li&gt;
&lt;li&gt;A basic understanding of HTML and CSS is a plus point.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;JavaScript is the most popular programming/coding language in the world. It powers the entire modern web. It provides millions of high-paying jobs in the world.&lt;/p&gt;

&lt;p&gt;That's why you want to learn JavaScript too. And you came to the right place!&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This JavaScript Course Is Right for You?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;This is the complete JavaScript course provided by &lt;a href="https://usemynotes.com/"&gt;Use My Notes&lt;/a&gt;. It's an all-in-one course that will take you from the very fundamentals of JavaScript, all the way to building complex applications.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You will learn modern JavaScript step by step from the very beginning. I'll walk you through practical and fun code examples and important principles of how JavaScript works behind the scenes.&lt;/p&gt;

&lt;p&gt;You'll also learn how to think like a developer, how to plan application features, how to architect your code, how to debug code, and many other real-world skills you'll need in your developer job.&lt;/p&gt;

&lt;p&gt;And unlike other courses, it really covers beginner, intermediate and advanced topics, so you don't need to buy any other courses to master JavaScript from the beginning!&lt;/p&gt;

&lt;p&gt;But... you don't need to go into all these topics. This is a huge course because, after all, it is "The Complete JavaScript Course". In fact, it's like many courses in 1. But you can become an excellent developer only by learning certain parts of the curriculum. That's why I have designed this course in a very modular way and designed paths that will make you move faster in the course.&lt;/p&gt;

&lt;h3&gt;
  
  
  So what exactly is covered in the course?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Master the JavaScript fundamentals:  if/else, loops, operators, variables, boolean, arrays,  functions, strings, and objects.&lt;/li&gt;
&lt;li&gt;Learn modern JavaScript (ES2015) from the beginning: optional chaining, arrow functions, spread operator, and destructuring.&lt;/li&gt;
&lt;li&gt;How JavaScript works behind the scenes: hoisting, reference values, engines, the call stack, scoping, the 'this' keyword, and more.&lt;/li&gt;
&lt;li&gt;Deep dive into functions: higher-order functions, bind, arrow functions, first-class, and closures.&lt;/li&gt;
&lt;li&gt;Deep dive into OOP: constructor functions (ES2015), classes (ES5), encapsulation, abstraction, inheritance, prototypal inheritance, and polymorphism. &lt;/li&gt;
&lt;li&gt;Deep dive into asynchronous JavaScript: the promises, async/await, event loop, and error handling. You will use these with AJAX calls to access data from third-party APIs.&lt;/li&gt;
&lt;li&gt;Learn the modern tools used by professional web developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  This course is for you if...
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;If you want to gain a true &amp;amp; deep understanding of JavaScript&lt;/li&gt;
&lt;li&gt;If  you're trying to learn JavaScript but: 1) still don't really understand JavaScript, or 2) still don't feel confident coding real apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who this course is for:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you want to get a true and deep understanding of JavaScript then take this course so that you can get a better understanding.&lt;/li&gt;
&lt;li&gt;Take this course if you're trying to learn JavaScript but: 1) still don't really understand JavaScript, or 2) still don't feel confident coding real apps.&lt;/li&gt;
&lt;li&gt;Take this course if you're interested in using a library/framework like React, Angular, Vue, or Node in the future.&lt;/li&gt;
&lt;li&gt;If you already know JavaScript so kindly Take this course for advanced. This course covers specialist topics for your better understanding.&lt;/li&gt;
&lt;li&gt;If you want to get started with programming, take this course: JavaScript is a great first language!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Originally posted on - &lt;a href="https://alimammiya.hashnode.dev/javascript-course-for-free-2022-from-zero-to-expert"&gt;JavaScript Course for free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Python Operators</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Fri, 08 Oct 2021 05:41:29 +0000</pubDate>
      <link>https://dev.to/alimammiya/python-operators-53gn</link>
      <guid>https://dev.to/alimammiya/python-operators-53gn</guid>
      <description>&lt;p&gt;In this module tutorial, we will learn &lt;a href="https://usemynotes.com/python-operators/"&gt;Python Operators&lt;/a&gt;. It’s a basic idea of Python that's needed for understanding the workflow of a Python program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Python Operators
&lt;/h2&gt;

&lt;p&gt;Operators commonly are used to performing operations on both values and variables in Python. These are standard symbols used for the aim of logical and arithmetic operations. In this post, we will look into various types of Python operators.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arithmetic operators&lt;/li&gt;
&lt;li&gt;Relational operators&lt;/li&gt;
&lt;li&gt;Logical operators&lt;/li&gt;
&lt;li&gt;Bitwise operators&lt;/li&gt;
&lt;li&gt;Assignment operators&lt;/li&gt;
&lt;li&gt;Membership Operators&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Arithmetic operators
&lt;/h3&gt;

&lt;p&gt;These operators are used to performing mathematical functions such as addition, multiplication, division, subtraction and much more.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+&lt;/td&gt;
&lt;td&gt;Addition: It  adds two operands&lt;/td&gt;
&lt;td&gt;x + y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Subtraction:  It  subtracts two operands&lt;/td&gt;
&lt;td&gt;x - y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;td&gt;Multiplication: It  multiplies two operands&lt;/td&gt;
&lt;td&gt;x * y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;Division (float): It  divides the first operand by the second&lt;/td&gt;
&lt;td&gt;x / y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;//&lt;/td&gt;
&lt;td&gt;Division (floor): It  divides the first operand by the second&lt;/td&gt;
&lt;td&gt;x // y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%&lt;/td&gt;
&lt;td&gt;Modulus: It returns the remainder when the first operand is divided by the second&lt;/td&gt;
&lt;td&gt;x % y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;**&lt;/td&gt;
&lt;td&gt;Power: It  Returns first raised to power second&lt;/td&gt;
&lt;td&gt;x ** y&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Examples of Arithmetic Operator 
a = 90
b = 40  
# Addition of numbers 
add = a + b 
# Subtraction of numbers 
sub = a - b 
# Multiplication of number 
mul = a * b   
# Division(float) of number 
div1 = a / b 
# Division(floor) of number 
div2 = a // b  
# Modulo of both number 
mod = a % b 
# Power
p = a ** b
# print results 
print(add) 
print(sub) 
print(mul) 
print(div1) 
print(div2) 
print(mod)
print(p)

Output:
130
50
3600
2.25
2
1
1.4780E + 78
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Relational Operators:
&lt;/h3&gt;

&lt;p&gt;A relational operator compares the values. It either returns True or False based on the conditions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; &lt;/td&gt;
&lt;td&gt;Greater than: It  gives True if the left operand is greater than the right&lt;/td&gt;
&lt;td&gt;x &amp;gt; y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt; &lt;/td&gt;
&lt;td&gt;Less than: It  gives True if the left operand is less than the right&lt;/td&gt;
&lt;td&gt;x &amp;lt; y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;==&lt;/td&gt;
&lt;td&gt;Equal to: It  gives True if both operands are equal&lt;/td&gt;
&lt;td&gt;x == y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;!=&lt;/td&gt;
&lt;td&gt;Not equal to: It  gives True if operands are not equal&lt;/td&gt;
&lt;td&gt;x != y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;=&lt;/td&gt;
&lt;td&gt;Greater than or equal to :  It  gives True if the left operand is greater than or equal to the right&lt;/td&gt;
&lt;td&gt;x &amp;gt;= y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;=&lt;/td&gt;
&lt;td&gt;Less than or equal to :  It  gives  True if the left operand is less than or equal to the right&lt;/td&gt;
&lt;td&gt;x &amp;lt;= y&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Examples of Relational Operators
a = 1
b = 3
# a &amp;gt; b is False
print(a &amp;gt; b)
# a &amp;lt; b is True
print(a &amp;lt; b)
# a == b is False
print(a == b)
# a != b is True
print(a != b)
# a &amp;gt;= b is False
print(a &amp;gt;= b)
# a &amp;lt;= b is True
print(a &amp;lt;= b)

Output:
False
True
False
True
False
True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Logical operators:
&lt;/h3&gt;

&lt;p&gt;Logical operators perform Logical AND, Logical OR and Logical NOT operations.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;And&lt;/td&gt;
&lt;td&gt;Logical AND: It  gives True if both the operands are true&lt;/td&gt;
&lt;td&gt;x and y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Or&lt;/td&gt;
&lt;td&gt;Logical OR: It  gives True if either of the operands is true&lt;/td&gt;
&lt;td&gt;x or y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not&lt;/td&gt;
&lt;td&gt;Logical NOT: It  gives True if the operand is false&lt;/td&gt;
&lt;td&gt;not x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Examples of Logical Operator
a = True
b = False  
# Print a and b is False
print(a and b)
# Print a or b is True
print(a or b)
# Print, not a is False
print(not a)

Output:
False
True
False
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Bitwise operators:
&lt;/h3&gt;

&lt;p&gt;Bitwise operators act on bits and perform bit by bit operations.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;amp;&lt;/td&gt;
&lt;td&gt;Bitwise AND&lt;/td&gt;
&lt;td&gt;x &amp;amp; y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;|&lt;/td&gt;
&lt;td&gt;Bitwise OR&lt;/td&gt;
&lt;td&gt;x | y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~&lt;/td&gt;
&lt;td&gt;Bitwise NOT&lt;/td&gt;
&lt;td&gt;~x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^&lt;/td&gt;
&lt;td&gt;Bitwise XOR&lt;/td&gt;
&lt;td&gt;x ^ y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;gt; &lt;/td&gt;
&lt;td&gt;Bitwise right shift&lt;/td&gt;
&lt;td&gt;x&amp;gt;&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&amp;lt;  &lt;/td&gt;
&lt;td&gt;Bitwise left shift&lt;/td&gt;
&lt;td&gt;x&amp;lt;&amp;lt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Examples of Bitwise operators
a = 10
b = 4
# Print bitwise AND operation  
print(a &amp;amp; b)
# Print bitwise OR operation
print(a | b)
# Print bitwise NOT operation 
print(~a)
# print bitwise XOR operation 
print(a ^ b)
# print bitwise right shift operation 
print(a &amp;gt;&amp;gt; 2)
# print bitwise left shift operation 
print(a &amp;lt;&amp;lt; 2)

Output:
0
14
-11
14
2
40
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Assignment operators:
&lt;/h3&gt;

&lt;p&gt;Assignment operators are used to assigning values to the variables.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;=&lt;/td&gt;
&lt;td&gt;Assign the value of the right side of expression to the left side operand&lt;/td&gt;
&lt;td&gt;x = y + z&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+=&lt;/td&gt;
&lt;td&gt;Add AND: Add right-side operand with left side operand and then assign to left operand&lt;/td&gt;
&lt;td&gt;a+=b  a=a+b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-=&lt;/td&gt;
&lt;td&gt;Subtract AND: Subtract right operand from left operand and then assign to left operand&lt;/td&gt;
&lt;td&gt;a-=b  a=a-b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;*=&lt;/td&gt;
&lt;td&gt;Multiply AND: Multiply right operand with left operand and then assign to left operand&lt;/td&gt;
&lt;td&gt;a*=b  a=a*b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/=&lt;/td&gt;
&lt;td&gt;Divide AND: Divide left operand with right operand and then assign to left operand&lt;/td&gt;
&lt;td&gt;a/=b  a=a/b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%=&lt;/td&gt;
&lt;td&gt;Modulus AND: Takes modulus using left and right operands and assign the result to left operand&lt;/td&gt;
&lt;td&gt;a%=b  a=a%b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;//=&lt;/td&gt;
&lt;td&gt;Divide(floor) AND: Divide left operand with right operand and then assign the value(floor) to left operand&lt;/td&gt;
&lt;td&gt;a//=b  a=a//b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;**=&lt;/td&gt;
&lt;td&gt;Exponent AND: Calculate exponent(raise power) value using operands and assign value to left operand&lt;/td&gt;
&lt;td&gt;a**=b  a=a**b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;amp;=&lt;/td&gt;
&lt;td&gt;Performs Bitwise AND on operands and assign value to left operand&lt;/td&gt;
&lt;td&gt;a&amp;amp;=b  a=a&amp;amp;b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;|=&lt;/td&gt;
&lt;td&gt;Performs Bitwise OR on operands and assign value to left operand&lt;/td&gt;
&lt;td&gt;a|=b   a=a|b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^=&lt;/td&gt;
&lt;td&gt;Performs Bitwise XOR on operands and assign value to left operand&lt;/td&gt;
&lt;td&gt;a^=b  a=a^b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;gt;=&lt;/td&gt;
&lt;td&gt;Performs Bitwise right shift on operands and assign value to left operand&lt;/td&gt;
&lt;td&gt;a&amp;gt;&amp;gt;=b   a=a&amp;gt;&amp;gt;b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&amp;lt;=&lt;/td&gt;
&lt;td&gt;Performs Bitwise left shift on operands and assign value to left operand&lt;/td&gt;
&lt;td&gt;a &amp;lt;&amp;lt;= b   a= a &amp;lt;&amp;lt; b&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Learn full tutorial-
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://usemynotes.com/python-operators/"&gt;Python Operators&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this module can be useful for you to understand Operators in Python. You should try to use all the Operators and functionality to get a better understanding. Stay in touch with us to find out more modules that are taught like this. Keep rehearsing it!&lt;/p&gt;

&lt;p&gt;Original posted on -  &lt;a href="https://alimammiya.hashnode.dev/python-operators"&gt;Python Operators&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why And Where You Can Learn Java Programming Full Courses For Free</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Fri, 24 Sep 2021 11:30:24 +0000</pubDate>
      <link>https://dev.to/alimammiya/why-and-where-you-can-learn-java-programming-full-courses-for-free-fp8</link>
      <guid>https://dev.to/alimammiya/why-and-where-you-can-learn-java-programming-full-courses-for-free-fp8</guid>
      <description>&lt;p&gt;In this post, we will provide the &lt;a href="https://usemynotes.com/java-programming/"&gt;Java Programming full Course for Free&lt;/a&gt;, and you can learn - What you'll learn, the list of Course content, Requirements, Description, and Why learn Java?&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Understand the basic to advance principles of Java Programming Language. &lt;/li&gt;
&lt;li&gt;You can able to create your first Java Application.&lt;/li&gt;
&lt;li&gt;In this tutorial, you will get to understand OOPs concepts, variables, and different data types.&lt;/li&gt;
&lt;li&gt;Understand the main OOPs language that most modern languages ​​are based on.&lt;/li&gt;
&lt;li&gt;Make yourself more strong for beginner to advance level programming interviews.&lt;/li&gt;
&lt;li&gt;Learn one of the most widely used Java programming languages in the world.&lt;/li&gt;
&lt;li&gt;Apply for real-time programming terms.&lt;/li&gt;
&lt;li&gt;Learn how to write high-quality code in Java programming.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Course content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-java/"&gt;What is Java &amp;amp; Applications of Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/features-of-java/"&gt;Features of Java and its Keywords&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/how-to-install-java/"&gt;How to Install Java on windows 10&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-is-jvm-jit/"&gt;What is JVM (Java Virtual Machine)&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/a-simple-java-program/"&gt;A Simple Java Program&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-is-java-runtime-environment/"&gt;What is Java Runtime Environment&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-is-data-types-in-java/"&gt;What are Data Types in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/variables-and-constants-in-java/"&gt;Constants in Java Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-operators-in-java/"&gt;What are Operators in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-methods-in-java/"&gt;What are Methods in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-control-flow-statements-in-java/"&gt;What are Control Flow Statements in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-loops-in-java/"&gt;What are Loops in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-strings-in-java/"&gt;What are Strings in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-arrays-in-java/"&gt;What are Arrays in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-access-modifiers-in-java/"&gt;What are Access Modifiers in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-are-constructors-in-java/"&gt;What are Constructors in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-is-abstraction-in-java/"&gt;What is Abstraction in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-is-inheritance-in-java/"&gt;What is Inheritance in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://usemynotes.com/what-is-polymorphism-in-java/"&gt;What is Polymorphism in Java&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/encapsulation-in-java/"&gt;Encapsulation in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/interface-in-java/"&gt;Interface in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/packages-in-java/"&gt;Packages in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/jdbc-in-java/"&gt;JDBC in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/file-handling-in-java/"&gt;File Handling in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/collections-in-java/"&gt;Collections in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/java-interview-questions-and-answers/"&gt;Most asked Java Interview Questions and Answers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You must have a computer running Microsoft Windows, Linux, or Mac operating system (OS) at work.&lt;/li&gt;
&lt;li&gt;At least 4GB of ram is recommended.&lt;/li&gt;
&lt;li&gt;You must know the basics of the C programming language to learn java.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;Have you never programmed in a computer before, and think or say that Java is a good programming language to start with. so you think right.&lt;/p&gt;

&lt;p&gt;Maybe you have some good experience with other programming languages, but want to learn Java. This is a great language for your CV (Curriculum vitae).&lt;/p&gt;

&lt;p&gt;Perhaps you are stuck in a low-paying programming job and want to move to a better, more senior position to learn Java programming, this might help you.&lt;/p&gt;

&lt;p&gt;The fact is, learning to program in Java is not only an excellent programming language, to begin with, but it will make you better at other computer programming languages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why learn Java?
&lt;/h2&gt;

&lt;p&gt;Java is often considered the mother of OOPs languages ​​because many other languages ​​have been based on it.&lt;/p&gt;

&lt;p&gt;Although Java is simple, it is one of the most powerful languages ​​ever created. Given that it was created 26 years ago, it is still heavily used and is generally one of the top 5 or 6 most popular and most widespread programming languages ​​in the world.&lt;/p&gt;

&lt;p&gt;Learning Java programming can really make you stronger at programming in other languages ​​such as - C++, Python programming, or C#, which equip you with a mental model of the computer while running your programs.&lt;/p&gt;

&lt;p&gt;By learning how things really work "under the hood" and understanding CPU architecture, memory space, and so on, you can create more efficient programs, and get a huge advantage over other programmers in the process.&lt;/p&gt;

&lt;p&gt;If you want to be a better developer, Java is a great way to start learning!&lt;/p&gt;

&lt;p&gt;It does not omit the course details. You'll learn how to write high-quality code and be an excellent problem solver. This course not only exists to code in the Java programming language, but it also includes all the details on the "why" you are doing. At the end of this course, you will be able to fully understand the concepts of the Java programming language.&lt;/p&gt;

&lt;p&gt;Original posted on - &lt;a href="https://alimammiya.hashnode.dev/why-and-where-you-can-learn-java-programming-full-courses-for-free"&gt;Java Programming full Course for Free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Free Plagiarism Checker</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Mon, 24 May 2021 07:39:37 +0000</pubDate>
      <link>https://dev.to/alimammiya/free-plagiarism-checker-2ch</link>
      <guid>https://dev.to/alimammiya/free-plagiarism-checker-2ch</guid>
      <description>&lt;p&gt;In this tutorial, we will study Free and &lt;a href="https://worldstreamseo.com/best-plagiarism-checker/"&gt;Best Plagiarism Checker&lt;/a&gt;, Sources of Plagiarism and you can get the details of free plagiarism tools available on the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free Plagiarism Checker
&lt;/h2&gt;

&lt;p&gt;Plagiarism Checkers tools are the need of the hour, with day to day increasing online content the role of a plagiarism checker becomes too significant. Plagiarism tools allow you to check whether the content is 100% authentic and original or has been copied from somewhere else. It doesn't matter whether you run a digital marketing agency or a website, the authenticity of content is quite imperative for you and your business.&lt;/p&gt;

&lt;p&gt;Sometimes intentionally or unintentionally we do copy content from other websites or sources. Not only does this copying reduce the overall SEO score but also our chances of ranking high in Google organic search. In the worst-case scenario, your content can get banned from the internet. The primary objective of a plagiarism checker is to dodge duplicate content or ideas at all costs. The plagiarism checker is an important tool to get a detailed report of the uniqueness of your article or content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If any academic institution found that there is Plagiarism in your report then you will be penalized. You might get expelled from that institution.&lt;/li&gt;
&lt;li&gt;Google might strike down your website because of plagiarized content.&lt;/li&gt;
&lt;li&gt;Plagiarism can cause serious legal action and penalties. And you could be expelled from that institution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For students, plagiarism checkers are a great tool to cross-check their scientific or general articles, Because small amounts of plagiarism can destroy the credibility of their whole paper.’ So, it is easy and safe to cross-check plagiarism content. The plagiarism checker also indicates the lines and paragraphs which are plagiarized and this tells you which part you should remove or omit from your article. There are many features of a plagiarism checker.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources of Plagiarism - There are four major types of Plagiarisms, such as
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Direct Plagiarism&lt;/li&gt;
&lt;li&gt;Self-plagiarism&lt;/li&gt;
&lt;li&gt;Accidental Plagiarism&lt;/li&gt;
&lt;li&gt;Mosaic Plagiarism&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Direct plagiarism is that plagiarism in which one copies word-to-word content from another person's article or research. This type of Plagiarism is highly unethical and unprofessional. This would lead to an absolute loss of credibility in eyes of others. Copying other’s work without permission is pure cheating.&lt;/p&gt;

&lt;p&gt;Mosaic plagiarism is that plagiarism when someone copies smaller parts of contents such as idioms, phrases, examples without giving due credit.&lt;/p&gt;

&lt;p&gt;Accidental Plagiarism is when someone mistakenly copied content from another person's work and forgot to give due credit. This type of Plagiarism doesn't hold any demeaning intention.&lt;/p&gt;

&lt;p&gt;Self-plagiarism is defined as resubmitting your work. It means that citing the same information twice or more than one time. It occurs by mistakes, and one should crosscheck his work, to avoid that kind of plagiarism.&lt;/p&gt;

&lt;h2&gt;
  
  
  There are a plethora of free plagiarism tools available on the internet such as
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Dupli checker&lt;/li&gt;
&lt;li&gt;Paper eater&lt;/li&gt;
&lt;li&gt;Copy leaks&lt;/li&gt;
&lt;li&gt;Grammarly&lt;/li&gt;
&lt;li&gt;Quetext&lt;/li&gt;
&lt;li&gt;Plagiarism hunt&lt;/li&gt;
&lt;li&gt;Plagtracker&lt;/li&gt;
&lt;li&gt;Viper&lt;/li&gt;
&lt;li&gt;Plagiarism checker&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Duplichecker
&lt;/h2&gt;

&lt;p&gt;This free tool is one of the best plagiarism tools on the internet right now. With great features and a wonderful user interface, they provide a reliable plagiarism report. You can use this tool online. Not just the plagiarism report but this tool also provides suggestions for grammatical errors, which makes it quite beneficial. The layout of this tool is pretty straightforward and you won't face any problem in operating this tool checker. But it also has some flaws such as it detects well when the text is made up of seven or more than seven words but it lags a lot when the word count is smaller. Which is a pretty small disadvantage.&lt;/p&gt;

&lt;p&gt;One significant flaw in this tool is that - If you are a free user then you can only scan fifty plagiarism checks per day. If you want to scan more than fifty checks then you have to pay for it and you have to buy their premium plan. You can either copy/paste your content in a tool or you can also upload docs or a text file from your device storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  PaperRater
&lt;/h2&gt;

&lt;p&gt;This amazing plagiarism tool does three tasks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vocabulary building&lt;/li&gt;
&lt;li&gt;Plagiarism checker&lt;/li&gt;
&lt;li&gt;Proofreading and grammar check&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This tool helps you in finding synonym recommendations for words and it can detect plagiarism quickly. This tool is well known for its quick and accurate results. This tool is claimed to be created by industry experts. But it also has a certain disadvantage and it is you can not store the reports. You have to take a screenshot or picture of the report for that purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copyleaks
&lt;/h2&gt;

&lt;p&gt;This plagiarism tool is specifically for academic content such as scientific articles and project reports.&lt;/p&gt;

&lt;p&gt;Many schools and universities use this tool for checking content. This tool can be assessed in many languages and forms. This tool allows users to utilize the API tool in order to explore and find the plagiarized academic content available on the internet. You can use this tool free but only for 10 pages and for that you need to sign up to create an account. Their premium pack starts with an annual bill of $9.99.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grammarly
&lt;/h2&gt;

&lt;p&gt;The Grammarly tool is very popular all over the world. It provides synonyms, rectifies grammatical errors and sentence structure according to our preferences. It also provides a plagiarism checker facility. This app provides spelling correction precisely and It also helps in improvising punctuations and the structure of a sentence correctly. It also offers a free and a premium version. You can detect plagiarism on both free and paid versions. Many users have recommended that the Chrome extension should be improvised a bit and The plagiarism reports are not accurate many times. The customization feature is the best part of the Grammarly tool. Where you can customize suggestions based on your writing style, preferences, moods, etc.&lt;/p&gt;

&lt;p&gt;Another major concern of users is that- Grammarly is not field-specific. There are a lot of false alerts in the name of recommendations that should be stopped immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plagiarism checker
&lt;/h2&gt;

&lt;p&gt;As the name suggests the plagiarism checker helps in monitoring plagiarism efficiently. This plagiarism checker tool is easy to use and has a user-friendly interface. This tool is entirely free and has very detailed guidelines. This tool has a step-by-step approach to check plagiarism. For students, this app is very beneficial because of its easy user interface, and they don't have to pay anything. You can use this tool on the internet only, it doesn't work offline. It has a serious disadvantage: it only works in google or yahoo browsers. You have to use these two browsers in order to use them freely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Viper
&lt;/h2&gt;

&lt;p&gt;Viper has an easy-to-use interface with precise and detailed reporting techniques. It requires just three steps in order to analyze your article and create a report. It checks plagiarism against ten billion documents available on the internet. With viper, you can scan long essays, paragraphs, journals pretty conveniently.&lt;/p&gt;

&lt;p&gt;The report of viper describes the lines and sentences where plagiarism is found. For using Viper you need to have an account, without an account, you cannot use this tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plagtracker
&lt;/h2&gt;

&lt;p&gt;This free plagiarism tool is used by Students, teachers, publishers, and website owners all over the world. The detailed report is the USP of plagTracker. It can support over six international languages. These languages are English, French, Spanish, German, Romanian, and Italian.&lt;/p&gt;

&lt;p&gt;In the free version, you simply can not upload a DOCX file. You can just copy and paste the content on this tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plagiarism hunt
&lt;/h2&gt;

&lt;p&gt;The free Plagiarism tool is an online tool that helps you to check different types of Plagiarism with only one click. You don't have to complete any registration process in order to use this tool. Plagiarism hunt will encrypt all the data and also delete it after a period of 24 hours.&lt;/p&gt;

&lt;p&gt;This tool is relatively slower than compared to all other tools, this is a disadvantage All the previous reports get deleted after 24 hours automatically&lt;/p&gt;

&lt;h2&gt;
  
  
  Quetext
&lt;/h2&gt;

&lt;p&gt;This plagiarism tool is one of the most trusted and accurate free plagiarism checkers available on the internet. It can scan minute details quite precisely and instantly. You can trust the plagiarism report of context completely. This tool is used by students, teachers, and professionals around the globe. Quetext plagiarism checker can scan millions of websites, books, and academic articles precisely to assess an article or a research paper and provides the plagiarism score in a decipherable manner Quetext comes with a fundamental and easy to understand layout and user interface, you do not need any kind of Facebook, Gmail registration or sign up in order to use it.&lt;/p&gt;

&lt;p&gt;Quetext is available in both paid &amp;amp; free versions. In the paid version a user has to buy a premium of Quetext for 9 dollars per month. The free version is only limited to three times usage. It also has a 500-word limit bar for the free version. From my personal experience the free version of Quetext is pretty good and precise for a smaller text count (&amp;lt;500). The free version of Quetext is as accurate as some of the premium versions of other tools&lt;/p&gt;

&lt;p&gt;These are some of the best free plagiarism checker tools.&lt;/p&gt;

&lt;p&gt;Post credit - &lt;a href="https://worldstreamseo.com/"&gt;World Stream SEO&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally posted on — &lt;a href="https://vocal.media/education/free-plagiarism-checker"&gt;vocal.media&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>copyright</category>
    </item>
    <item>
      <title>Announcing Flutter 2.2 at Google I/O 2021</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Wed, 19 May 2021 10:57:40 +0000</pubDate>
      <link>https://dev.to/alimammiya/announcing-flutter-2-2-at-google-i-o-2021-3k02</link>
      <guid>https://dev.to/alimammiya/announcing-flutter-2-2-at-google-i-o-2021-3k02</guid>
      <description>&lt;p&gt;At Google I/O today, we announced  &lt;a rel="nofollow" href="https://flutter.dev/docs/whats-new"&gt;Flutter 2.2&lt;/a&gt;, our latest release of the open-source toolkit for building beautiful apps for any device from a single platform. Flutter 2.2 is the best version of Flutter yet, with updates that make it easier than ever for developers to monetize their apps through in-app purchases, payments, and ads; to connect to cloud services and APIs that extend apps to support new capabilities; and with tooling and language features that allow developers to eliminate a whole class of errors, increase app performance and reduce package size.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building on the foundation of Flutter 2
&lt;/h2&gt;

&lt;p&gt;Flutter 2.2 is built on the foundation of Flutter 2, which extended Flutter from its mobile roots to incorporate web, desktop, and embedded usage. It is uniquely designed for a world of ambient computing, where users have a wide variety of different devices and form factors and are looking for consistent experiences that span across their daily lives. With Flutter 2.2, enterprises, startups, and entrepreneurs alike can build high-quality solutions that can reach the full potential of their addressable market, allowing creative inspiration (rather than the target platform) to be the only limiting factor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flutter is now the most popular framework for cross-platform development.
&lt;/h2&gt;

&lt;p&gt;A recent mobile developer study highlights the growth of Flutter. Analyst firm &lt;a rel="nofollow" href="https://www.slashdata.co/"&gt;SlashData’s&lt;/a&gt; &lt;a rel="nofollow" href="https://www.slashdata.co/reports/?category=mobile-desktop"&gt;Mobile Developer Population Forecast 2021&lt;/a&gt; shows that Flutter is now the most popular framework for cross-platform development, with 45% of developers selecting it, representing 47% growth between Q1 2020 and Q1 2021. Our own data confirms this shift towards Flutter; in the last 30 days, more than one in eight of the new apps in the Play Store are built with Flutter.&lt;/p&gt;

&lt;p&gt;At I/O, we shared that there are now over 200,000 apps in the Play Store alone built using Flutter. These apps come from companies like Tencent, whose WeChat messaging app is used by over 1.2 billion users on iOS and Android; ByteDance, originators of TikTok, who have now built 70 distinct apps using Flutter; and other apps from companies including BMW, SHEIN, Grab and DiDi. Of course, Flutter isn’t just used by large corporations. Some of the most innovative apps are coming from names you might not have heard of: for example, Wombo, the viral singing selfie app; Fastly, the intermittent fasting app, and Kite, a beautiful investment trading app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Flutter 2.2
&lt;/h2&gt;

&lt;p&gt;The Flutter 2.2 release is focused on improvements to the development experience to help you deliver more reliable, performant apps to your customers.&lt;/p&gt;

&lt;p&gt;Sound null safety is now the default for new projects. Null safety adds protection against null reference exceptions, giving developers the means to express non-nullable types in their code. And since Dart’s implementation is sound, the compiler can eliminate null checks at runtime, providing increased performance for your apps. The ecosystem has responded quickly, with around 5,000 packages already updated to support null safety.&lt;/p&gt;

&lt;p&gt;There are lots of performance improvements in this release also: for web apps, we offer background caching using service workers; for Android apps, Flutter supports deferred components; for iOS, we’ve been working on tooling to precompile shaders to eliminate or reduce first-run jank. We’ve also added a number of new features to the DevTools suite that help you understand how memory is allocated in your apps, as well as support for third-party tools extensions.&lt;/p&gt;

&lt;p&gt;Additionally, we’ve been working on a few important areas of polish, such as improved accessibility for web targets.&lt;/p&gt;

&lt;p&gt;Our work extends beyond the core of Flutter. We’ve also been partnering with other Google teams to help integrate Flutter into our broader developer stack. In particular, we continue to build trusted services that help developers responsibly monetize their apps. Our &lt;a rel="nofollow" href="https://developers.google.com/admob/flutter/quick-start"&gt;new ads SDK&lt;/a&gt; is updated in this release with null safety and support for adaptive banner formats. We’re also introducing a &lt;a rel="nofollow" href="http://pub.dev/packages/pay"&gt;new payment plugin&lt;/a&gt;, built in partnership with the Google Pay team, that lets you take payment for physical goods on both iOS and Android. And we have updated our &lt;a rel="nofollow" href="https://pub.dev/packages/in_app_purchase"&gt;in-app purchases plugin&lt;/a&gt;, along with a matching &lt;a rel="nofollow" href="https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases"&gt;codelab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As the “secret sauce” that powers Flutter, &lt;a rel="nofollow" href="https://dart.dev/"&gt;Dart&lt;/a&gt; also gets an update in this release. Dart 2.13 expands support for native interoperability, with support for arrays and packed structs in FFI. It also includes support for type aliases, which increase readability and provide a gentle pathway for certain refactoring scenarios. We continue to add integrations for the broader ecosystem, with a Dart &lt;a rel="nofollow" href="https://github.com/marketplace/actions/setup-dart-sdk"&gt;GitHub Action&lt;/a&gt; and a curated Docker Official Image that is optimized for cloud-based deployment of business logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  More than a Google project
&lt;/h2&gt;

&lt;p&gt;While Google continues to be the primary contributor to the Flutter project, we’re delighted to see the growth of the broader ecosystem around Flutter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YVM3Z8na--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1621420383162/qAwYz_xX1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YVM3Z8na--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1621420383162/qAwYz_xX1.png" alt="1 zroRqBB-vjUR_UCvYCKSUg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One area of particular growth over recent months has been the broadening of Flutter to an ever growing number of platforms and operating systems. At Flutter Engage, we announced that Toyota is bringing Flutter to their next generation vehicle infotainment systems. And last month, Canonical shipped their first release of Ubuntu with integrated support for Flutter, with Snap integration and support for Wayland.&lt;/p&gt;

&lt;p&gt;Two new partners demonstrate this ever-growing ecosystem. Samsung is porting Flutter to Tizen, with an open source repository that others can also contribute to. And Sony is leading the effort to deliver a solution for embedded Linux.&lt;/p&gt;

&lt;p&gt;Designers benefit also from the open source nature of this project, with the announcement from Adobe of its updated XD to Flutter plugin. Adobe XD provides designers a great way to experiment and iterate, and now with enhanced Flutter support, designers and developers can collaborate on the same assets, putting great ideas into production faster than ever.&lt;/p&gt;

&lt;p&gt;Lastly, Microsoft continues to collaborate with us; besides the work the Surface team has been doing to build foldable experiences with Flutter, this week sees the alpha of Flutter support for UWP apps built for Windows 10. We’re excited to see more apps that take advantage of the platform adaptations built into Flutter to provide a great experience across mobile, desktop, web and beyond.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Great Experiences
&lt;/h2&gt;

&lt;p&gt;More than anything, we built Flutter to help developers build great experiences. We are animated by the idea that app development can be better: that we can empower you by removing traditional impediments to reaching your audience.&lt;/p&gt;

&lt;p&gt;We love seeing how you put Flutter to work. One example comes in the form of a project from the US Veterans Administration. The video below shows how their Flutter app is helping them provide rehabilitation for soldiers with post-traumatic stress disorders.&lt;/p&gt;

&lt;p&gt;With a &lt;a rel="nofollow" href="https://events.google.com/io/program/content?4=topic_flutter"&gt;wide variety of workshops, presentations and on-demand sessions about Flutter&lt;/a&gt; at Google I/O, we’re excited to share our work with all of you. And don’t forget to check out our fun &lt;a rel="nofollow" href="https://photobooth.flutter.dev/"&gt;photo booth web app&lt;/a&gt;, built with Flutter, which lets you create a selfie with our Dash mascot and her friends!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xO6ehfDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1621420598357/dR3qPu8Rt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xO6ehfDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1621420598357/dR3qPu8Rt.png" alt="0 ZdwECz0chT1hOq6Y.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="nofollow" href="http://creativecommons.org/licenses/by/4.0/"&gt;Some rights reserved&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originaly posted on &lt;a href="https://medium.com/flutter/announcing-flutter-2-2-at-google-i-o-2021-92f0fcbd7ef9"&gt;medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>flutter</category>
      <category>google</category>
      <category>news</category>
    </item>
    <item>
      <title>150 JavaScript Questions Part 1</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Mon, 17 May 2021 04:55:05 +0000</pubDate>
      <link>https://dev.to/alimammiya/150-javascript-questions-part-1-hmn</link>
      <guid>https://dev.to/alimammiya/150-javascript-questions-part-1-hmn</guid>
      <description>&lt;p&gt;In this post, we can provide 50 multiple-choice JavaScript questions and answers, with the help of this you can prepare your javascript interview easily. &lt;/p&gt;

&lt;p&gt;If you like this post so we can provide the next 50 + 50 questions and answers in the next part.&lt;/p&gt;

&lt;h2&gt;
  
  
  150 JavaScript Questions Part 1
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://alimammiya.hashnode.dev/150-javascript-questions-part-1"&gt;150 JavaScript Questions Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alimammiya.hashnode.dev/150-javascript-questions-part-2"&gt;150 JavaScript Questions Part 2&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h6&gt;
  
  
  1. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&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;name&lt;/span&gt;&lt;span class="p"&gt;);&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;age&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;Lydia&lt;/code&gt; and &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;Lydia&lt;/code&gt; and &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;ReferenceError&lt;/code&gt; and &lt;code&gt;21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;undefined&lt;/code&gt; and &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Answer: D&lt;/b&gt;

Within the function, we first declare the `name` variable with the `var` keyword. This means that the variable gets hoisted (memory space is set up during the creation phase) with the default value of `undefined`, until we actually get to the line where we define the variable. We haven't defined the variable yet on the line where we try to log the `name` variable, so it still holds the value of `undefined`.

Variables with the `let` keyword (and `const`) are hoisted, but unlike `var`, don't get initialized. They are not accessible before the line we declare (initialize) them. This is called the "temporal dead zone". When we try to access the variables before they are declared, JavaScript throws a `ReferenceError`.
&lt;/p&gt;




&lt;h6&gt;
  
  
  2. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;i&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;i&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;0 1 2&lt;/code&gt; and &lt;code&gt;0 1 2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;0 1 2&lt;/code&gt; and &lt;code&gt;3 3 3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;3 3 3&lt;/code&gt; and &lt;code&gt;0 1 2&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

Because of the event queue in JavaScript, the `setTimeout` callback function is called _after_ the loop has been executed. Since the variable `i` in the first loop was declared using the `var` keyword, this value was global. During the loop, we incremented the value of `i` by `1` each time, using the unary operator `++`. By the time the `setTimeout` callback function was invoked, `i` was equal to `3` in the first example.

In the second loop, the variable `i` was declared using the `let` keyword: variables declared with the `let` (and `const`) keyword are block-scoped (a block is anything between `{ }`). During each iteration, `i` will have a new value, and each value is scoped inside the loop.
&lt;/p&gt;




&lt;h6&gt;
  
  
  3. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shape&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;diameter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;radius&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;perimeter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PI&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&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;shape&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;diameter&lt;/span&gt;&lt;span class="p"&gt;());&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;shape&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;perimeter&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;20&lt;/code&gt; and &lt;code&gt;62.83185307179586&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;20&lt;/code&gt; and &lt;code&gt;NaN&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;20&lt;/code&gt; and &lt;code&gt;63&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;NaN&lt;/code&gt; and &lt;code&gt;63&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt; Answer: B&lt;/b&gt;

Note that the value of `diameter` is a regular function, whereas the value of `perimeter` is an arrow function.

With arrow functions, the `this` keyword refers to its current surrounding scope, unlike regular functions! This means that when we call `perimeter`, it doesn't refer to the shape object, but to its surrounding scope (window for example).

There is no value `radius` on that object, which returns `NaN`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  4. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;1&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;false&lt;/code&gt; and &lt;code&gt;NaN&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;false&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

The unary plus tries to convert an operand to a number. `true` is `1`, and `false` is `0`.

The string `'Lydia'` is a truthy value. What we're actually asking, is "is this truthy value falsy?". This returns `false`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  5. Which one is true?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bird&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;small&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mouse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mickey&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;small&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;mouse.bird.size&lt;/code&gt; is not valid&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;mouse[bird.size]&lt;/code&gt; is not valid&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;mouse[bird["size"]]&lt;/code&gt; is not valid&lt;/li&gt;
&lt;li&gt;D: All of them are valid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

In JavaScript, all object keys are strings (unless it's a Symbol). Even though we might not _type_ them as strings, they are always converted into strings under the hood

JavaScript interprets (or unboxes) statements. When we use bracket notation, it sees the first opening bracket `[` and keeps going until it finds the closing bracket `]`. Only then, it will evaluate the statement.

`mouse[bird.size]`: First it evaluates `bird.size`, which is `"small"`. `mouse["small"]` returns `true`

However, with dot notation, this doesn't happen. `mouse` does not have a key called `bird`, which means that `mouse.bird` is `undefined`. Then, we ask for the `size` using dot notation: `mouse.bird.size`. Since `mouse.bird` is `undefined`, we're actually asking `undefined.size`. This isn't valid, and will throw an error similar to `Cannot read property "size" of undefined`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  6. What's the output?
&lt;/h6&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;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hey!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&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;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;Hello&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;Hey!&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;E: &lt;code&gt;TypeError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

In JavaScript, all objects interact by _reference_ when setting them equal to each other.

First, variable `c` holds a value to an object. Later, we assign `d` with the same reference that `c` has to the object.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YRBzWHY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ko5k0fs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YRBzWHY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ko5k0fs.png"&gt;&lt;/a&gt;

When you change one object, you change all of them.

&lt;/p&gt;




&lt;h6&gt;
  
  
  7. What's the output?
&lt;/h6&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;3&lt;/span&gt;&lt;span class="p"&gt;;&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="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&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="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="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;b&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt; &lt;code&gt;false&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

`new Number()` is a built-in function constructor. Although it looks like a number, it's not really a number: it has a bunch of extra features and is an object.

When we use the `==` operator, it only checks whether it has the same _value_. They both have the value of `3`, so it returns `true`.

However, when we use the `===` operator, both value _and_ type should be the same. It's not: `new Number()` is not a number, it's an **object**. Both return `false.`

&lt;/p&gt;




&lt;h6&gt;
  
  
  8. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;Chameleon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nx"&gt;colorChange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;newColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;freddie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Chameleon&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;purple&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&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;freddie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;colorChange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;orange&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;purple&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;green&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;TypeError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: D&lt;/b&gt;

The `colorChange` function is static. Static methods are designed to live only on the constructor in which they are created, and cannot be passed down to any children. Since `freddie` is a child, the function is not passed down, and not available on the `freddie` instance: a `TypeError` is thrown.

&lt;/p&gt;




&lt;h6&gt;
  
  
  9. What's the output?
&lt;/h6&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;greeting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;greetign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt; &lt;span class="c1"&gt;// Typo!&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;greetign&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;{}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;ReferenceError: greetign is not defined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

It logs the object, because we just created an empty object on the global object! When we mistyped `greeting` as `greetign`, the JS interpreter actually saw this as `global.greetign = {}` (or `window.greetign = {}` in a browser).

In order to avoid this, we can use `"use strict"`. This makes sure that you have declared a variable before setting it equal to anything.

&lt;/p&gt;




&lt;h6&gt;
  
  
  10. What happens when we do this?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;bark&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Woof!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;bark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;animal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: Nothing, this is totally fine!&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;SyntaxError&lt;/code&gt;. You cannot add properties to a function this way.&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"Woof"&lt;/code&gt; gets logged.&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

This is possible in JavaScript, because functions are objects! (Everything besides primitive types are objects)

A function is a special type of object. The code you write yourself isn't the actual function. The function is an object with properties. This property is invocable.

&lt;/p&gt;




&lt;h6&gt;
  
  
  11. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;member&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hallie&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getFullName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&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;member&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getFullName&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;TypeError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;SyntaxError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;Lydia Hallie&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;undefined&lt;/code&gt; &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

In JavaScript, functions are objects, and therefore, the method `getFullName` gets added to the constructor function object itself. For that reason, we can call `Person.getFullName()`, but `member.getFullName` throws a `TypeError`. 

If you want a method to be available to all object instances, you have to add it to the prototype property:



```js
Person.prototype.getFullName = function() {
  return `${this.firstName} ${this.lastName}`;
};
```



&lt;/p&gt;




&lt;h6&gt;
  
  
  12. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lydia&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hallie&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sarah&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sarah&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Smith&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&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;lydia&lt;/span&gt;&lt;span class="p"&gt;);&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;sarah&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;Person {firstName: "Lydia", lastName: "Hallie"}&lt;/code&gt; and &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;Person {firstName: "Lydia", lastName: "Hallie"}&lt;/code&gt; and &lt;code&gt;Person {firstName: "Sarah", lastName: "Smith"}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;Person {firstName: "Lydia", lastName: "Hallie"}&lt;/code&gt; and &lt;code&gt;{}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;Person {firstName: "Lydia", lastName: "Hallie"}&lt;/code&gt; and &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

For `sarah`, we didn't use the `new` keyword. When using `new`, `this` refers to the new empty object we create. However, if you don't add `new`, `this` refers to the **global object**!

We said that `this.firstName` equals `"Sarah"` and `this.lastName` equals `"Smith"`. What we actually did, is defining `global.firstName = 'Sarah'` and `global.lastName = 'Smith'`. `sarah` itself is left `undefined`, since we don't return a value from the `Person` function.

&lt;/p&gt;




&lt;h6&gt;
  
  
  13. What are the three phases of event propagation?
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;A: Target &amp;gt; Capturing &amp;gt; Bubbling&lt;/li&gt;
&lt;li&gt;B: Bubbling &amp;gt; Target &amp;gt; Capturing&lt;/li&gt;
&lt;li&gt;C: Target &amp;gt; Bubbling &amp;gt; Capturing&lt;/li&gt;
&lt;li&gt;D: Capturing &amp;gt; Target &amp;gt; Bubbling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: D&lt;/b&gt;

During the **capturing** phase, the event goes through the ancestor elements down to the target element. It then reaches the **target** element, and **bubbling** begins.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5JpR5wNk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/N18oRgd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5JpR5wNk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/N18oRgd.png"&gt;&lt;/a&gt;

&lt;/p&gt;




&lt;h6&gt;
  
  
  14. All object have prototypes.
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;A: true&lt;/li&gt;
&lt;li&gt;B: false&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

All objects have prototypes, except for the **base object**. The base object is the object created by the user, or an object that is created using the `new` keyword. The base object has access to some methods and properties, such as `.toString`. This is the reason why you can use built-in JavaScript methods! All of such methods are available on the prototype. Although JavaScript can't find it directly on your object, it goes down the prototype chain and finds it there, which makes it accessible for you.

&lt;/p&gt;




&lt;h6&gt;
  
  
  15. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sum&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="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&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="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;NaN&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;TypeError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"12"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;3&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

JavaScript is a **dynamically typed language**: we don't specify what types certain variables are. Values can automatically be converted into another type without you knowing, which is called _implicit type coercion_. **Coercion** is converting from one type into another.

In this example, JavaScript converts the number `1` into a string, in order for the function to make sense and return a value. During the addition of a numeric type (`1`) and a string type (`'2'`), the number is treated as a string. We can concatenate strings like `"Hello" + "World"`, so what's happening here is `"1" + "2"` which returns `"12"`. 

&lt;/p&gt;




&lt;h6&gt;
  
  
  16. What's the output?
&lt;/h6&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;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&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;number&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;);&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;number&lt;/span&gt;&lt;span class="p"&gt;);&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;number&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;0&lt;/code&gt; &lt;code&gt;2&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;0&lt;/code&gt; &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

The **postfix** unary operator `++`:

1. Returns the value (this returns `0`)
2. Increments the value (number is now `1`)

The **prefix** unary operator `++`:

1. Increments the value (number is now `2`)
2. Returns the value (this returns `2`)

This returns `0 2 2`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  17. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getPersonInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;one&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;two&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;three&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&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;one&lt;/span&gt;&lt;span class="p"&gt;);&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;two&lt;/span&gt;&lt;span class="p"&gt;);&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;three&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;getPersonInfo&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; years old`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"Lydia"&lt;/code&gt; &lt;code&gt;21&lt;/code&gt; &lt;code&gt;["", " is ", " years old"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;["", " is ", " years old"]&lt;/code&gt; &lt;code&gt;"Lydia"&lt;/code&gt; &lt;code&gt;21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"Lydia"&lt;/code&gt; &lt;code&gt;["", " is ", " years old"]&lt;/code&gt; &lt;code&gt;21&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

If you use tagged template literals, the value of the first argument is always an array of the string values. The remaining arguments get the values of the passed expressions!

&lt;/p&gt;




&lt;h6&gt;
  
  
  18. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;checkAge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;You are an adult!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;You are still an adult.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&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="s2"&gt;`Hmm.. You don't have an age I guess`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;checkAge&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;You are an adult!&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;You are still an adult.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;Hmm.. You don't have an age I guess&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

When testing equality, primitives are compared by their _value_, while objects are compared by their _reference_. JavaScript checks if the objects have a reference to the same location in memory.&lt;br&gt;

The two objects that we are comparing don't have that: the object we passed as a parameter refers to a different location in memory than the object we used in order to check equality.

This is why both `{ age: 18 } === { age: 18 }` and `{ age: 18 } == { age: 18 }` return `false`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  19. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;(...&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&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="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"number"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"array"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"object"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;"NaN"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

The rest parameter (`...args`) lets us "collect" all remaining arguments into an array. An array is an object, so `typeof args` returns `"object"`

&lt;/p&gt;




&lt;h6&gt;
  
  
  20. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use strict&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;;&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;age&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;TypeError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

With `"use strict"`, you can make sure that you don't accidentally declare global variables. We never declared the variable `age`, and since we use `"use strict"`, it will throw a reference error. If we didn't use `"use strict"`, it would have worked, since the property `age` would have gotten added to the global object.

&lt;/p&gt;




&lt;h6&gt;
  
  
  21. What's the value of &lt;code&gt;sum&lt;/code&gt;?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;10*10+5&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;105&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"105"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;TypeError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;"10*10+5"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

`eval` evaluates codes that's passed as a string. If it's an expression, like in this case, it evaluates the expression. The expression is `10 * 10 + 5`. This returns the number `105`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  22. How long is cool_secret accessible?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;sessionStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cool_secret&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: Forever, the data doesn't get lost.&lt;/li&gt;
&lt;li&gt;B: When the user closes the tab.&lt;/li&gt;
&lt;li&gt;C: When the user closes the entire browser, not only the tab.&lt;/li&gt;
&lt;li&gt;D: When the user shuts off their computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

The data stored in `sessionStorage` is removed after closing the _tab_.

If you used `localStorage`, the data would've been there forever, unless for example `localStorage.clear()` is invoked.

&lt;/p&gt;




&lt;h6&gt;
  
  
  23. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&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;num&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;8&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;10&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;SyntaxError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

With the `var` keyword, you can declare multiple variables with the same name. The variable will then hold the latest value.

You cannot do this with `let` or `const` since they're block-scoped.

&lt;/p&gt;




&lt;h6&gt;
  
  
  24. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hasOwnProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hasOwnProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

All object keys (excluding Symbols) are strings under the hood, even if you don't type it yourself as a string. This is why `obj.hasOwnProperty('1')` also returns true.

It doesn't work that way for a set. There is no `'1'` in our set: `set.has('1')` returns `false`. It has the numeric type `1`, `set.has(1)` returns `true`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  25. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;one&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;two&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;three&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&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;obj&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;{ a: "one", b: "two" }&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;{ b: "two", a: "three" }&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;{ a: "three", b: "two" }&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;SyntaxError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

If you have two keys with the same name, the key will be replaced. It will still be in its first position, but with the last specified value.

&lt;/p&gt;




&lt;h6&gt;
  
  
  26. The JavaScript global execution context creates two things for you: the global object, and the "this" keyword.
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;A: true&lt;/li&gt;
&lt;li&gt;B: false&lt;/li&gt;
&lt;li&gt;C: it depends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

The base execution context is the global execution context: it's what's accessible everywhere in your code.

&lt;/p&gt;




&lt;h6&gt;
  
  
  27. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&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;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt; &lt;code&gt;3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt; &lt;code&gt;4&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;3&lt;/code&gt; &lt;code&gt;4&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

The `continue` statement skips an iteration if a certain condition returns `true`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  28. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;giveLydiaPizza&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Just give Lydia pizza already!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;giveLydiaPizza&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"Just give Lydia pizza already!"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;TypeError: not a function&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;SyntaxError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

`String` is a built-in constructor, which we can add properties to. I just added a method to its prototype. Primitive strings are automatically converted into a string object, generated by the string prototype function. So, all strings (string objects) have access to that method!

&lt;/p&gt;




&lt;h6&gt;
  
  
  29. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&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="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;123&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="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;456&lt;/span&gt;&lt;span class="p"&gt;;&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="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;123&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;456&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

Object keys are automatically converted into strings. We are trying to set an object as a key to object `a`, with the value of `123`.

However, when we stringify an object, it becomes `"[object Object]"`. So what we are saying here, is that `a["[object Object]"] = 123`. Then, we can try to do the same again. `c` is another object that we are implicitly stringifying. So then, `a["[object Object]"] = 456`.

Then, we log `a[b]`, which is actually `a["[object Object]"]`. We just set that to `456`, so it returns `456`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  30. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;First&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Second&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;baz&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Third&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;baz&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;First&lt;/code&gt; &lt;code&gt;Second&lt;/code&gt; &lt;code&gt;Third&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;First&lt;/code&gt; &lt;code&gt;Third&lt;/code&gt; &lt;code&gt;Second&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;Second&lt;/code&gt; &lt;code&gt;First&lt;/code&gt; &lt;code&gt;Third&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;Second&lt;/code&gt; &lt;code&gt;Third&lt;/code&gt; &lt;code&gt;First&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B &lt;/b&gt;

We have a `setTimeout` function and invoked it first. Yet, it was logged last.

This is because in browsers, we don't just have the runtime engine, we also have something called a `WebAPI`. The `WebAPI` gives us the `setTimeout` function to start with, and for example the DOM.

After the _callback_ is pushed to the WebAPI, the `setTimeout` function itself (but not the callback!) is popped off the stack.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K9a3fUvI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/X5wsHOg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K9a3fUvI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/X5wsHOg.png"&gt;&lt;/a&gt;

Now, `foo` gets invoked, and `"First"` is being logged.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cjD03xFm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Pvc0dGq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cjD03xFm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Pvc0dGq.png"&gt;&lt;/a&gt;

`foo` is popped off the stack, and `baz` gets invoked. `"Third"` gets logged.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MLuzfeg0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/WhA2bCP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MLuzfeg0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/WhA2bCP.png"&gt;&lt;/a&gt;

The WebAPI can't just add stuff to the stack whenever it's ready. Instead, it pushes the callback function to something called the _queue_.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1-6HsSXD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NSnDZmU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1-6HsSXD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NSnDZmU.png"&gt;&lt;/a&gt;

This is where an event loop starts to work. An **event loop** looks at the stack and task queue. If the stack is empty, it takes the first thing on the queue and pushes it onto the stack.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mqji9e-p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/uyiScAI.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mqji9e-p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/uyiScAI.png"&gt;&lt;/a&gt;

`bar` gets invoked, `"Second"` gets logged, and it's popped off the stack.

&lt;/p&gt;




&lt;h6&gt;
  
  
  31. What is the event.target when clicking the button?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"console.log('first div')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"console.log('second div')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"console.log('button')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Click!
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: Outer &lt;code&gt;div&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: Inner &lt;code&gt;div&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;button&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: An array of all nested elements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

The deepest nested element that caused the event is the target of the event. You can stop bubbling by `event.stopPropagation`

&lt;/p&gt;




&lt;h6&gt;
  
  
  32. When you click the paragraph, what's the logged output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"console.log('div')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"console.log('p')"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    Click here!
  &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;p&lt;/code&gt; &lt;code&gt;div&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;div&lt;/code&gt; &lt;code&gt;p&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;p&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;div&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

If we click `p`, we see two logs: `p` and `div`. During event propagation, there are 3 phases: capturing, target, and bubbling. By default, event handlers are executed in the bubbling phase (unless you set `useCapture` to `true`). It goes from the deepest nested element outwards.

&lt;/p&gt;




&lt;h6&gt;
  
  
  33. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&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;sayHi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;));&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;sayHi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;undefined is 21&lt;/code&gt; &lt;code&gt;Lydia is 21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;function&lt;/code&gt; &lt;code&gt;function&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;Lydia is 21&lt;/code&gt; &lt;code&gt;Lydia is 21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;Lydia is 21&lt;/code&gt; &lt;code&gt;function&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: D&lt;/b&gt;

With both, we can pass the object to which we want the `this` keyword to refer to. However, `.call` is also _executed immediately_!

`.bind.` returns a _copy_ of the function, but with a bound context! It is not executed immediately.

&lt;/p&gt;




&lt;h6&gt;
  
  
  34. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)();&lt;/span&gt;
&lt;span class="p"&gt;}&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="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"object"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"number"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"function"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;"undefined"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

The `sayHi` function returns the returned value of the immediately invoked function expression (IIFE). This function returned `0`, which is type `"number"`.

FYI: there are only 7 built-in types: `null`, `undefined`, `boolean`, `number`, `string`, `object`, and `symbol`. `"function"` is not a type, since functions are objects, it's of type `"object"`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  35. Which of these values are falsy?
&lt;/h6&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="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;''&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;new Number(0)&lt;/code&gt;, &lt;code&gt;''&lt;/code&gt;, &lt;code&gt;new Boolean(false)&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;''&lt;/code&gt;, &lt;code&gt;new Boolean(false)&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: All of them are falsy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

There are 8 falsy values:

- `undefined`
- `null`
- `NaN`
- `false`
- `''` (empty string)
- `0`
- `-0`
- `0n` (BigInt(0))

Function constructors, like `new Number` and `new Boolean` are truthy.

&lt;/p&gt;




&lt;h6&gt;
  
  
  36. What's the output?
&lt;/h6&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="k"&gt;typeof&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"number"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"string"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"object"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;"undefined"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

`typeof 1` returns `"number"`.
`typeof "number"` returns `"string"`

&lt;/p&gt;




&lt;h6&gt;
  
  
  37. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;;&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;numbers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;[1, 2, 3, 7 x null, 11]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;[1, 2, 3, 11]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;[1, 2, 3, 7 x empty, 11]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;SyntaxError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

When you set a value to an element in an array that exceeds the length of the array, JavaScript creates something called "empty slots". These actually have the value of `undefined`, but you will see something like:

`[1, 2, 3, 7 x empty, 11]`

depending on where you run it (it's different for every browser, node, etc.)

&lt;/p&gt;




&lt;h6&gt;
  
  
  38. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&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;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&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;x&lt;/span&gt;&lt;span class="p"&gt;);&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;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;undefined&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;undefined&lt;/code&gt; &lt;code&gt;undefined&lt;/code&gt; &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;1&lt;/code&gt; &lt;code&gt;2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;1&lt;/code&gt; &lt;code&gt;undefined&lt;/code&gt; &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

The `catch` block receives the argument `x`. This is not the same `x` as the variable when we pass arguments. This variable `x` is block-scoped.
Later, we set this block-scoped variable equal to `1`, and set the value of the variable `y`. Now, we log the block-scoped variable `x`, which is equal to `1`.

Outside of the `catch` block, `x` is still `undefined`, and `y` is `2`. When we want to `console.log(x)` outside of the `catch` block, it returns `undefined`, and `y` returns `2`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  39. Everything in JavaScript is either a...
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;A: primitive or object&lt;/li&gt;
&lt;li&gt;B: function or object&lt;/li&gt;
&lt;li&gt;C: trick question! only objects&lt;/li&gt;
&lt;li&gt;D: number or object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

JavaScript only has primitive types and objects.

Primitive types are `boolean`, `null`, `undefined`, `bigint`, `number`, `string`, and `symbol`.

What differentiates a primitive from an object is that primitives do not have any properties or methods; however, you'll note that `'foo'.toUpperCase()` evaluates to `'FOO'` and does not result in a `TypeError`. This is because when you try to access a property or method on a primitive like a string, JavaScript will implicitly wrap the primitive type using one of the wrapper classes, i.e. `String`, and then immediately discard the wrapper after the expression evaluates. All primitives except for `null` and `undefined` exhibit this behaviour.

&lt;/p&gt;




&lt;h6&gt;
  
  
  40. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]].&lt;/span&gt;&lt;span class="nx"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;[0, 1, 2, 3, 1, 2]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;[6, 1, 2]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;[1, 2, 0, 1, 2, 3]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;[1, 2, 6]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

`[1, 2]` is our initial value. This is the value we start with, and the value of the very first `acc`. During the first round, `acc` is `[1,2]`, and `cur` is `[0, 1]`. We concatenate them, which results in `[1, 2, 0, 1]`.

Then, `[1, 2, 0, 1]` is `acc` and `[2, 3]` is `cur`. We concatenate them, and get `[1, 2, 0, 1, 2, 3]`

&lt;/p&gt;




&lt;h6&gt;
  
  
  41. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;false&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;true&lt;/code&gt; &lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

`null` is falsy. `!null` returns `true`. `!true` returns `false`.

`""` is falsy. `!""` returns `true`. `!true` returns `false`.

`1` is truthy. `!1` returns `false`. `!false` returns `true`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  42. What does the &lt;code&gt;setInterval&lt;/code&gt; method return in the browser?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hi&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: a unique id&lt;/li&gt;
&lt;li&gt;B: the amount of milliseconds specified&lt;/li&gt;
&lt;li&gt;C: the passed function&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

It returns a unique id. This id can be used to clear that interval with the `clearInterval()` function.

&lt;/p&gt;




&lt;h6&gt;
  
  
  43. What does this return?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;["L", "y", "d", "i", "a"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;["Lydia"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;[[], "Lydia"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;[["L", "y", "d", "i", "a"]]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: A&lt;/b&gt;

A string is an iterable. The spread operator maps every character of an iterable to one element.

&lt;/p&gt;




&lt;h6&gt;
  
  
  44. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;generator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;generator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&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;gen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&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;gen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;[0, 10], [10, 20]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;20, 20&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;10, 20&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;0, 10 and 10, 20&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

Regular functions cannot be stopped mid-way after invocation. However, a generator function can be "stopped" midway, and later continue from where it stopped. Every time a generator function encounters a `yield` keyword, the function yields the value specified after it. Note that the generator function in that case doesn’t _return_ the value, it _yields_ the value.

First, we initialize the generator function with `i` equal to `10`. We invoke the generator function using the `next()` method. The first time we invoke the generator function, `i` is equal to `10`. It encounters the first `yield` keyword: it yields the value of `i`. The generator is now "paused", and `10` gets logged.

Then, we invoke the function again with the `next()` method. It starts to continue where it stopped previously, still with `i` equal to `10`. Now, it encounters the next `yield` keyword, and yields `i * 2`. `i` is equal to `10`, so it returns `10 * 2`, which is `20`. This results in `10, 20`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  45. What does this return?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;firstPromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rej&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;one&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;secondPromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rej&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;two&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;race&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;firstPromise&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;secondPromise&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;res&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"one"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"two"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"two" "one"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;"one" "two"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

When we pass multiple promises to the `Promise.race` method, it resolves/rejects the _first_ promise that resolves/rejects. To the `setTimeout` method, we pass a timer: 500ms for the first promise (`firstPromise`), and 100ms for the second promise (`secondPromise`). This means that the `secondPromise` resolves first with the value of `'two'`. `res` now holds the value of `'two'`, which gets logged.

&lt;/p&gt;




&lt;h6&gt;
  
  
  46. What's the output?
&lt;/h6&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;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;members&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&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;members&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;null&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;[null]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;[{}]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;[{ name: "Lydia" }]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: D&lt;/b&gt;

First, we declare a variable `person` with the value of an object that has a `name` property.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oGskHxFn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/TML1MbS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oGskHxFn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/TML1MbS.png"&gt;&lt;/a&gt;

Then, we declare a variable called `members`. We set the first element of that array equal to the value of the `person` variable. Objects interact by _reference_ when setting them equal to each other. When you assign a reference from one variable to another, you make a _copy_ of that reference. (note that they don't have the _same_ reference!)

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8zt01Tk8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/FSG5K3F.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8zt01Tk8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/FSG5K3F.png"&gt;&lt;/a&gt;

Then, we set the variable `person` equal to `null`.

&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vzYMJeuq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/sYjcsMT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vzYMJeuq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/sYjcsMT.png"&gt;&lt;/a&gt;

We are only modifying the value of the `person` variable, and not the first element in the array, since that element has a different (copied) reference to the object. The first element in `members` still holds its reference to the original object. When we log the `members` array, the first element still holds the value of the object, which gets logged.

&lt;/p&gt;




&lt;h6&gt;
  
  
  47. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lydia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&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;item&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;{ name: "Lydia" }, { age: 21 }&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"name", "age"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;"Lydia", 21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;["name", "Lydia"], ["age", 21]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

With a `for-in` loop, we can iterate through object keys, in this case `name` and `age`. Under the hood, object keys are strings (if they're not a Symbol). On every loop, we set the value of `item` equal to the current key it’s iterating over. First, `item` is equal to `name`, and gets logged. Then, `item` is equal to `age`, which gets logged.

&lt;/p&gt;




&lt;h6&gt;
  
  
  48. What's the output?
&lt;/h6&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;3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;5&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;"345"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"75"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;12&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;"12"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: B&lt;/b&gt;

Operator associativity is the order in which the compiler evaluates the expressions, either left-to-right or right-to-left. This only happens if all operators have the _same_ precedence. We only have one type of operator: `+`. For addition, the associativity is left-to-right.

`3 + 4` gets evaluated first. This results in the number `7`.

`7 + '5'` results in `"75"` because of coercion. JavaScript converts the number `7` into a string, see question 15. We can concatenate two strings using the `+`operator. `"7" + "5"` results in `"75"`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  49. What's the value of &lt;code&gt;num&lt;/code&gt;?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;parseInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;7*6&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;42&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;"42"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;7&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;NaN&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

Answer: C

Only the first numbers in the string is returned. Based on the _radix_ (the second argument in order to specify what type of number we want to parse it to: base 10, hexadecimal, octal, binary, etc.), the `parseInt` checks whether the characters in the string are valid. Once it encounters a character that isn't a valid number in the radix, it stops parsing and ignores the following characters.

`*` is not a valid number. It only parses `"7"` into the decimal `7`. `num` now holds the value of `7`.

&lt;/p&gt;




&lt;h6&gt;
  
  
  50. What's the output?
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;[]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;[null, null, null]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;C: &lt;code&gt;[undefined, undefined, undefined]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D: &lt;code&gt;[ 3 x empty ]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Answer&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;

&lt;b&gt;Answer: C&lt;/b&gt;

When mapping over the array, the value of `num` is equal to the element it’s currently looping over. In this case, the elements are numbers, so the condition of the if statement `typeof num === "number"` returns `true`. The map function creates a new array and inserts the values returned from the function.

However, we don’t return a value. When we don’t return a value from the function, the function returns `undefined`. For every element in the array, the function block gets called, so for each element we return `undefined`.

&lt;/p&gt;




&lt;p&gt;Orininally posted on - &lt;a href="https://github.com/Alimammiya/javascript-questions"&gt;Alimammiya&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>C Programming Course for Free</title>
      <dc:creator>Alimam Miya</dc:creator>
      <pubDate>Sun, 21 Mar 2021 04:29:10 +0000</pubDate>
      <link>https://dev.to/alimammiya/c-programming-course-for-free-252n</link>
      <guid>https://dev.to/alimammiya/c-programming-course-for-free-252n</guid>
      <description>&lt;p&gt;In this post, we will provide the  &lt;a href="https://usemynotes.com/c-programming/"&gt;C Programming Course for Free&lt;/a&gt;, and you can learn - What you'll learn, the list of Course content, Requirements, Description, and Why learn C?&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Understand the basic principles of C Programming Language.&lt;/li&gt;
&lt;li&gt;You can able to create your first C Application.&lt;/li&gt;
&lt;li&gt;In this tutorial, you will get to understand variables and different data types.&lt;/li&gt;
&lt;li&gt;Understand the main language that most modern languages ​​are based on.&lt;/li&gt;
&lt;li&gt;Make yourself more strong for beginner-level programming interviews.&lt;/li&gt;
&lt;li&gt;Learn one of the most widely used c programming languages in the world.&lt;/li&gt;
&lt;li&gt;Apply for real-time programming terms&lt;/li&gt;
&lt;li&gt;Learn how to write high-quality code in c programming&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Course content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://usemynotes.com/c-programming-language-basic-introduction/"&gt;C Programming Language Basic Introduction&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://usemynotes.com/what-is-an-algorithm-in-c-programming/"&gt;What is an Algorithm in C Programming&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://usemynotes.com/introduction-to-flowchart-in-c/"&gt;Introduction to Flowchart in C&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/hello-world-program-in-c/"&gt;Hello world program in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/input-output-statement-in-c/"&gt;Input Output Statement in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/variables-and-constants-in-c-programming/"&gt;Constants in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/data-types-in-c-programming/"&gt;Data Types in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/keywords-in-c-programming/"&gt;Keywords in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-operators-in-c/"&gt;What are Operators in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-header-files-in-c/"&gt;What are Header Files in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-decision-making-statements-in-c/"&gt;What is Decision Making Statements in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-loop-statement-in-c/"&gt;What is Loop Statement in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-function-in-c-programming-language/"&gt;What is Function in C Programming Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-recursion-in-c/"&gt;What is Recursion in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-arrays-in-c-programming/"&gt;Arrays in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-pointers-in-c-programming/"&gt;Pointers in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-are-structures-in-c-programming/"&gt;Structures in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-union-in-c-programming/"&gt;What is Union in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-a-string-in-c-programming/"&gt;What is a string in C Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/what-is-file-handling-in-c/"&gt;What is File Handling in C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://usemynotes.com/c-programming-interview-questions/"&gt;C Programming Interview Questions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You must have a computer running Microsoft Windows, Linux, or Mac operating system at work.&lt;/li&gt;
&lt;li&gt;At least 4GB of ram is recommended.&lt;/li&gt;
&lt;li&gt;No need for any type of programming experience, all concepts taught in this class!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;Have you never programmed a computer before, and think or say that C is a good programming language to start with. this is.&lt;/p&gt;

&lt;p&gt;Maybe you have some good experience with other programming languages, but want to learn C. This is great language for your resume.&lt;/p&gt;

&lt;p&gt;Or perhaps you are stuck in a low-paid programming job and want to move to a better, more senior position. Learning C can help you.&lt;/p&gt;

&lt;p&gt;The fact is, learning to program in C is not only an excellent programming language, to begin with, but it will make you better at programming in other computer languages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why learn C?
&lt;/h2&gt;

&lt;p&gt;C is often considered the mother of all languages ​​because many other languages ​​have been based on it.&lt;/p&gt;

&lt;p&gt;Although C is simple it is one of the most powerful languages ​​ever created. Given that it was built over 40 years ago, it is still heavily used and is generally one of the top 5 or 10 most popular and most comprehensive programming languages ​​in the world.&lt;/p&gt;

&lt;p&gt;Learning C can actually make you better at programming in other languages ​​like C ++, Java, or C #, which equips you with a mental model of the computer while running your programs.&lt;/p&gt;

&lt;p&gt;By learning how things really work "under the hood", and understanding CPU architecture, memory space, and so on, you can build more efficient programs, and get a bigger advantage over other programmers in the process Huh.&lt;/p&gt;

&lt;p&gt;If you want to be a better developer, C is a great way to start learning!&lt;/p&gt;

&lt;p&gt;It does not skip over the course description. You will learn how to write high-quality code and how to be an excellent problem solver. This course does not only exist to code in the C programming language but, includes all the details on the "why" you are doing. At the end of this course, you will be able to fully understand the concepts of the C programming language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Originally posted on&lt;/strong&gt; - &lt;a href="https://alimammiya.hashnode.dev/c-programming-course-for-free"&gt;C Programming Course for Free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>c</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
