Month: April 2025

  • Comprehensive Java Full Course with Advanced Java Features for Java Developers having Great Career Prospects

    Comprehensive Java Full Course with Advanced Java Features for Java Developers having Great Career Prospects

    This comprehensive Java resource covers fundamental programming concepts through advanced topics. It begins with basic syntax, control flow (loops and conditionals), and object-oriented programming principles like encapsulation, inheritance, polymorphism, and abstraction. The material further explores advanced Java features such as exception handling, multithreading, collections (ArrayList), and string manipulation. File operations, interfaces, abstract classes, and generic types are also explained. The resource also discusses data structures (stacks, queues, linked lists, arrays, sorting, searching) and provides insights into becoming a Java developer, including necessary skills and career prospects. Finally, it includes examples of Java projects like an ATM, text editor, and signup form.

    Java Programming Study Guide

    Quiz

    1. Explain the concept of platform independency in Java. Why is Java known as a “Write Once, Run Anywhere” language?
    2. What is multi-threading in Java, and what are its benefits? Provide a brief example of a scenario where multi-threading would be advantageous.
    3. Describe the difference between pre-increment/decrement and post-increment/decrement unary operators in Java. Illustrate with a short code snippet.
    4. Explain the purpose of relational operators in Java. Give three examples of relational operators and describe the conditions under which they would evaluate to true.
    5. What is the primary function of logical operators in Java? Describe the behavior of the && (AND) and || (OR) operators.
    6. Explain the functionality of the ternary operator in Java. Provide a simple example demonstrating its usage and the benefit it offers.
    7. Describe the difference in behavior between a while loop and a do-while loop in Java. When might you choose to use one over the other?
    8. What is the purpose of the break statement within a switch block in Java? What happens if a break statement is omitted?
    9. Explain the concept of nested if statements in Java. Provide a simple scenario where using a nested if statement would be appropriate.
    10. What is the role of control statements in Java? List three different types of control statements discussed in the source material.

    Quiz Answer Key

    1. Platform independency in Java means that a Java program can run on any operating system that has a compatible Java Runtime Environment (JRE) installed. Java achieves this because, upon compilation, the code is translated into platform-independent bytecode, rather than machine-specific code. This bytecode can then be executed by any JRE, making Java a “Write Once, Run Anywhere” language.
    2. Multi-threading in Java is a feature that allows a program to execute multiple parts (threads) concurrently. The benefit of multi-threading is that it can improve performance by utilizing the same memory and resources to perform multiple tasks simultaneously. For example, while typing in a word processor, a separate thread can be used to perform spell checking in the background.
    3. Pre-increment/decrement operators modify the value of a variable before it is used in an expression, while post-increment/decrement operators modify the value after it has been used.
    4. int a = 5;
    5. int b = ++a; // pre-increment: a becomes 6, b is assigned 6
    6. int c = 5;
    7. int d = c++; // post-increment: d is assigned 5, then c becomes 6
    8. Relational operators in Java are used to compare two operands and determine the relationship between them. They return a boolean value (true or false). Examples: > (greater than) evaluates to true if the left operand is greater than the right; < (less than) evaluates to true if the left operand is less than the right; == (equal to) evaluates to true if both operands are equal.
    9. The primary function of logical operators in Java is to perform logical operations on boolean operands, combining or negating boolean values. The && (AND) operator returns true if and only if both of its operands are true. The || (OR) operator returns true if at least one of its operands is true.
    10. The ternary operator in Java is a shorthand if-else construct that allows you to write a conditional expression in a single line. Its syntax is condition ? value_if_true : value_if_false. For example, int min = (a < b) ? a : b; assigns the smaller of a and b to min. The benefit is more concise code for simple conditional assignments.
    11. A while loop in Java evaluates its condition before executing the loop body. If the condition is initially false, the loop body will never be executed. A do-while loop, on the other hand, evaluates its condition after executing the loop body. This guarantees that the loop body will be executed at least once, even if the condition is initially false. You might use a do-while loop when you need to perform an action at least once before checking a condition.
    12. The break statement within a switch block in Java is used to terminate the execution of the switch statement and transfer control to the statement immediately following the switch block. If a break statement is omitted, the execution will “fall through” to the next case block, even if its value does not match the switch expression.
    13. Nested if statements in Java involve placing one if statement (or if-else statement) inside another if statement (or else block). This allows for more complex decision-making based on multiple conditions. A simple scenario would be checking if a number is positive, and then, if it is, further checking if it is also even or odd.
    14. Control statements in Java are used to manage the flow of execution within a program, determining which statements are executed and in what order. Three different types of control statements discussed in the source material are if-else statements, while loops, and for loops.

    Essay Format Questions

    1. Discuss the key features of the Java programming language as outlined in the provided source. Analyze how these features contribute to Java’s popularity and suitability for various software development tasks.
    2. Explain the different categories of operators available in Java, providing examples of each type. Discuss how operators are used to manipulate data and perform computations within Java programs.
    3. Describe the various control flow statements in Java, including conditional statements and loops. Illustrate with examples how these statements enable programmers to create programs with complex logic and repetitive actions.
    4. Compare and contrast the different types of loops available in Java (while, do-while, for). Discuss the scenarios in which each type of loop is most appropriate and provide examples to support your reasoning.
    5. Analyze the concepts of exception handling in Java, including the use of try, catch, and finally blocks. Discuss the importance of exception handling for creating robust and reliable Java applications.

    Glossary of Key Terms

    • Platform Independency: The ability of a software program to run on any operating system or hardware platform without requiring significant modifications.
    • Bytecode: The intermediate code produced by the Java compiler after compiling the source code. It is platform-independent and executed by the Java Virtual Machine (JVM).
    • JRE (Java Runtime Environment): A software package that contains everything needed to run Java programs, including the JVM and supporting libraries.
    • JDK (Java Development Kit): A software development kit that includes the JRE, a compiler (javac), and other development tools needed to create, test, and debug Java applications.
    • Multi-threading: A programming technique that allows multiple parts of a program to run concurrently within a single process, improving performance and responsiveness.
    • Operator: A special symbol that performs a specific operation on one or more operands (variables or values).
    • Unary Operator: An operator that acts on a single operand (e.g., increment ++, decrement –, negation -).
    • Arithmetic Operator: An operator that performs mathematical calculations (e.g., addition +, subtraction -, multiplication *, division /, modulus %).
    • Shift Operator: An operator that shifts the bits of an operand to the left or right by a specified number of positions (<<, >>).
    • Relational Operator: An operator that compares two operands and determines the relationship between them, returning a boolean value (e.g., >, <, ==, !=, >=, <=).
    • Bitwise Operator: An operator that performs operations at the level of individual bits of the operands (e.g., & (AND), | (OR), ^ (XOR)).
    • Logical Operator: An operator that performs logical operations on boolean operands (e.g., && (AND), || (OR), ! (NOT)).
    • Ternary Operator: A conditional operator that takes three operands (condition ? value_if_true : value_if_false).
    • Assignment Operator: An operator that assigns a value to a variable (e.g., =, +=, -=, *=, /=).
    • Control Statement: A statement in a programming language that determines the flow of execution of the program (e.g., if-else, while, for, switch).
    • Conditional Statement: A control statement that allows the program to execute different blocks of code based on whether a certain condition is true or false (e.g., if, else if, else, switch).
    • Loop: A control statement that allows a block of code to be executed repeatedly until a certain condition is met (e.g., while, do-while, for).
    • break Statement: A control flow statement used to immediately terminate the execution of a loop or a switch statement.
    • Nested if Statement: An if statement that is placed inside another if statement or an else block.
    • Robust: A characteristic of a program that indicates its ability to handle errors and unexpected input gracefully, preventing crashes or incorrect behavior.
    • Exception Handling: A mechanism in programming languages to deal with runtime errors or exceptional conditions, allowing the program to recover or terminate gracefully.
    • Compile-time Error: An error that is detected by the compiler during the process of translating the source code into machine code or bytecode.
    • Runtime Error: An error that occurs during the execution of a program.
    • Garbage Collector: An automatic memory management process in Java that reclaims memory occupied by objects that are no longer in use.

    Java Programming Concepts: A Comprehensive Overview

    Document Review: Java Programming Concepts and Features

    This briefing document summarizes the main themes and important ideas and facts presented in the provided source, “002-Java_Full_Course_in_10_Hours__-03-24-2025.pdf.” The source covers fundamental aspects of the Java programming language, including its core features, operators, control statements, data structures, object-oriented principles, exception handling, file handling, threads, regular expressions, networking, and practical examples.

    **I. Core Features of Java:**

    The document begins by highlighting several key features of Java:

    * **Platform Independence:** Java follows the “Write Once, Run Anywhere” (WORA) principle. Unlike languages like C or C++, Java code is compiled into **bytecode**, which is platform-independent and can be executed on any machine with a Java Runtime Environment (JRE). “unlike other programming languages such as C or C++ Etc which are compiled into platform specific machines Java is guaranteed to be right once Run Anywhere language on compilation Java program is compiled into bite code this bite code is platform independent and can be run on any machine plus this bite code format also provides security any machine with Java runtime environment can run Java programs.”

    * **High Performance:** Although Java is an interpreted language and inherently slower than compiled languages like C++, it achieves high performance through the use of a **Just-In-Time (JIT) compiler**. “Java is an interpreted language so it will never be as fast as a compile language like C or C++ but just Java enables high performance with the use of just in time compiler so here Java provides us high performance.”

    * **Multi-threading:** Java supports multi-threading, allowing programs to perform multiple tasks concurrently by utilizing the same memory and resources. “Java multi-threading feature makes it possible to write a program that can do many tasks simultaneously the benefit of multi-threading is that it utilizes the same memory and other resources to execute multiple threats at the same time like while typing grammatical errors are checked along.”

    * **Security:** Java is considered a secure language, enabling the development of virus-free and tamper-free systems. Java programs run within the JRE with limited interaction with the host operating system. “when it comes to Security Java is always the first choice with Java secure features it enables us to develop virus free and temper free systems Java program always runs in a Java runtime environment with almost null interaction with host operating system hence it is most secure.”

    * **Portability:** The cross-platform nature of Java makes its code highly portable. “the crossplatform feature enables the Java code to be highly portable.”

    * **Object-Oriented:** Java is based on the object-oriented programming (OOP) model, where everything is treated as an object with data and behavior. This facilitates extensibility. “In Java everything is an object which has some data and behavior Java can be easily extended as it is based on objectoriented programming model.”

    * **Robustness:** Java aims to eliminate error-prone code through compile-time and runtime error checking. It features automatic garbage collection for memory management and exception handling for mishandled exceptions. “Java makes an effort to eliminate error prone codes by emphasizing mainly on compile time error checking and runtime error checking but the main areas in which Java improvised were memory management and mishandled exceptions by introducing automatic garbage collector and exception handling.”

    * **Availability:** JDK versions are available for various operating systems like Windows, Linux, and macOS. “in open jdk and the jdk versions are also available for all the types of operating systems such as Windows Linux Mac and many other flavors of Linux.”

    **II. Operators in Java:**

    The document details various types of operators in Java, explaining their functionality and providing simple code examples:

    * **Unary Operators:** Operate on a single operand (e.g., increment `++`, decrement `–`, negation `-`). Examples demonstrate pre-increment, post-increment, pre-decrement, and post-decrement.

    * **Arithmetic Operators:** Perform basic mathematical operations (+, -, \*, /, %). Examples show addition, subtraction, multiplication, division, and modulus. “Java athematic operators are used to perform addition subtraction multiplication and division they act as basic mathematic operations.”

    * **Shift Operators:** Shift bits to the left (`<<`) or right (`>>`) by a specified number of positions. An example illustrates left shift operations and how binary representation is affected. “the shift operator is used to shift the bits in the value to the left or right side of the specific number of times we have two types of shift operators which are left shift operator and the right shift operator the left shift operator moves the specific number of bits towards the left side and the right shift towards the right side.”

    * **Relational Operators:** Compare operands and return a boolean value (e.g., <, >, <=, >=, ==, !=). An example compares if `a` is less than `b` and `c`. “the Java relational operator is used to compare the operant on both the sides of the relational operator this particular operator judge whether one of the operant is greater or lesser or equal or not equal to the other operator.”

    * **Bitwise Operators:** Perform operations on individual bits of operands (&, |, ^, ~, <<, >>, >>>). An example demonstrates bitwise AND and post-increment. “basically the bitwise operator is applied on the bits for example if we provide a number to the variable that particular number will be converted into binary format and after that the operation will be applied on the bits one by one.”

    * **Logical Operators:** Combine boolean expressions (&& – AND, || – OR, ! – NOT). The relational operator example is extended to include the logical AND operator. “The Logical operators are the operators which are applied on both the ends or both the operant so the basic logical operators supported in Java programming language are and or and not the and operator is used to perform logical operation on two operant and it will result in a Boolean result so to become a true Boolean result and should be having both the operant as true and in order to result a True Value either one of the operant should be true and when it comes to not not is just a simple logical operator dat which negates the existing value that means if the value is true then after the not operation the value will be converted into false.”

    * **Ternary Operator:** A shorthand for a simple if-else conditional expression (`condition ? value_if_true : value_if_false`). An example finds the minimum of two numbers using the ternary operator. “the ternary operator is simple but highly powerful operator used in Java programming language this particular ternary operator will reduce the code length to one line.”

    * **Assignment Operators:** Assign values to variables (=, +=, -=, \*=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=). An example demonstrates simple assignment and compound assignment (addition and subtraction). “the assignment operators used in Java programming language are simply used to allocate the resultant memory into the variable which is located in the left side of the operant the basic assignment operators used in Java programming language are equals to and double equals to.”

    **III. Control Statements in Java:**

    The document explains and provides examples for various control flow statements in Java:

    * **If Statement:** Executes a block of code if a specified condition is true. An example demonstrates a simple `if-else` statement to check if a number is greater than 20. “if the condition specified as true the if block will be executed otherwise the else block will be executed.”

    * **While Loop:** Repeatedly executes a block of code as long as a specified condition is true. An example prints numbers from 5 to 15 with an increment of 2. “evaluates a certain condition if the condition is true then the code is executed the process is continued until the specific condition turns out to be false the condition to be specified in while loop must be a Boolean expression.”

    * **Do-While Loop:** Similar to the `while` loop, but the loop body is executed at least once before the condition is checked. An example initializes a variable to 20, prints it once, increments it, and then checks if it’s less than or equal to 20 (resulting in a single execution). “the condition of the do V Loop is evaluated after the execution of the loop body this guarantees that the loop is executed at least once.”

    * **For Loop:** Executes a block of code a specific number of times. An example prints numbers from 1 to 10. “used to iterate and evaluate a code multiple times when the number of iterations is known by the user it is recommended to use the fall Loop.” It highlights the three parts of a `for` loop: declaration, condition, and increment/decrement.

    * **Switch Case:** Executes one block of code among many possible blocks based on the value of an expression. The document notes important points about `switch` statements, such as the use of `break` to terminate the statement sequence and the permissibility of constant case values. “used to execute a single statement for multiple conditions… certain points must be noted while using the switch state M which are one or n number of case values can be specified for a switch expression case values that are duplicate or not permissible a compile time error is generated by the compiler if unique values are not used next the case value must be a literal or a constant variables are not permissible the last condition is usage of break statement is made to terminate the statement sequence it is optional to use the statement.”

    The document then proceeds to provide practical examples of `if-else-if` (ladder), nested `if`, ternary operator usage as a conditional statement, and `switch` case statements, including a leap year checker, a car class selector, finding the greatest of three numbers, determining the greater of two numbers, and a month name printer. It also demonstrates the use of the `break` statement within a loop to terminate it prematurely based on a condition.

    **IV. Data Structures:**

    The source delves into fundamental data structures in Java:

    * **Arrays:**

    * **1D Arrays:** Explained as a multi-value container. The concept of array declaration, initialization (with a fixed size), and how arrays are stored in RAM (stack for reference, heap for the actual array with default values) is introduced. Reading and updating elements in a 1D array are demonstrated with code examples.

    * **Multidimensional Arrays (2D Arrays – Array of Arrays):** Explained as an array where each element is itself an array. The concept of different lengths for inner arrays is mentioned. Declaration, initialization, reading single elements, updating elements, and reading all elements using nested loops are illustrated with code.

    * **Strings:**

    * **String Literals (Interned Strings):** Explained how string literals are created in the “string pool” and how multiple references can point to the same literal, thus saving memory. The concept of lookup before creation and immutability is emphasized.

    * **String Objects (Using `new` keyword):** Explained how the `new` keyword always creates a new string object in the heap memory, even if the content is the same as an existing literal or object.

    * **String Methods:** A list of commonly used string methods is provided, including `equals`, `equalsIgnoreCase`, `length`, `charAt`, `toUpperCase`, `toLowerCase`, `replace`, `trim`, `contains`, `toCharArray`, `isEmpty`, `endsWith`, `startsWith`, `concat`.

    * **String API Demonstrations:** Practical code examples illustrate the usage of `length()`, `charAt()`, `toUpperCase()` (showing immutability), `toLowerCase()`, `contains()`, `substring()`, `replace()`, `toCharArray()`, and `split()` methods. A use case for validating email and phone number format using string methods is also provided. The concept of string immutability is reinforced with a concatenation example.

    * **StringBuffer:** Introduced as a mutable alternative to `String`, where data can be appended using the `append()` method without creating a new object each time.

    * **Stack:** Defined as an abstract data structure following the Last-In, First-Out (LIFO) principle. The basic operations `push` (insert) and `pop` (remove) are explained. A code example demonstrates the implementation of a stack using an array, including `push`, `pop`, `isEmpty`, `isFull`, `peek` operations, and a driver `main` method to showcase its usage.

    * **Queue:** Defined as an abstract data structure following the First-In, First-Out (FIFO) principle. The basic operations `enqueue` (insert at the rear) and `dequeue` (remove from the front) are explained. Its use in asynchronous data transfer and resource sharing is mentioned. A code example demonstrates using the built-in `Queue` interface (implemented by `LinkedList`) and its methods like `add`, `remove`, `size`, and `contains`.

    * **LinkedList:** Explained as a linear data structure where elements are linked together using nodes. The difference between `ArrayList` (array-based) and `LinkedList` (node-based) in terms of memory allocation and performance is highlighted. Various methods of the `LinkedList` class are demonstrated with code examples, including adding elements (`add`, `add(index, element)`), clearing the list (`clear()`), cloning (`clone()`), finding the index of an element (`indexOf()`), and adding elements at the end (`offer()`).

    * **HashMap:** Introduced as a map-based data structure that stores key-value pairs. Key characteristics such as allowing one null key and multiple null values, being unsynchronized, and not maintaining insertion order are mentioned. The concepts of initial capacity and load factor affecting performance are explained. Synchronized HashMap is discussed using `Collections.synchronizedMap()`, and the fail-fast behavior of iterators is noted. Common constructors are listed. A code example demonstrates basic `HashMap` operations like `put`, `get`, `containsKey`, `size`, and `clear`.

    * **ArrayList:** Described as a resizable array implementation of the `List` interface, allowing dynamic addition and removal of elements. Key features include allowing duplicate elements, maintaining insertion order, and being non-synchronized. A code example shows basic `ArrayList` operations like adding elements (`add`), getting elements (`get`), setting elements (`set`), removing elements (`remove`), checking size (`size`), iterating through elements (using a for-each loop), and sorting using `Collections.sort()`.

    * **Generics:** Explained as a feature that provides type safety to collections. The syntax for declaring generic classes and using type parameters is introduced. The benefits of generics, such as compile-time type checking and eliminating the need for manual type casting, are highlighted. An example demonstrates creating a generic `ArrayList` of strings.

    * **File Handling:** Explained as reading from and writing to files in Java using the `java.io` package. The concept of streams (byte stream and character stream) is introduced. Various useful `File` class methods are listed (e.g., `canRead()`, `canWrite()`, `createNewFile()`, `delete()`, `exists()`, `getName()`, `getAbsolutePath()`, `length()`, `list()`, `mkdir()`). Code examples demonstrate creating a new file, getting file information, writing to a file using `FileWriter`, and reading from a file using `Scanner`.

    **V. Threads in Java:**

    The document covers the fundamentals of threads in Java:

    * **Java Thread Definition:** Defined as a lightweight subprocess, the smallest independent unit of a program with a separate path of execution. Every Java program has at least one main thread.

    * **Thread Life Cycle:** The different states of a thread are explained: New, Runnable, Running, Waiting, and Terminated, with a brief description of each state.

    * **Creating Threads:** Two ways to create threads are explained:

    * **Extending the `Thread` class:** An example shows creating a class that extends `Thread` and overrides the `run()` method. Creating an instance of this class and calling the `start()` method to begin execution in a new thread is demonstrated.

    * **Implementing the `Runnable` interface:** An example shows creating a class that implements `Runnable` and implementing the `run()` method. Creating a `Thread` object by passing an instance of the `Runnable` class to the `Thread` constructor and then calling `start()` is demonstrated.

    * **Multi-threading:** Defined as the ability of a program to execute more than one thread concurrently, allowing for optimal resource utilization. A simple example shows the main thread starting two custom threads (implementing `Runnable`) and their concurrent execution. The concept of `setDaemon(true)` is briefly mentioned.

    * **Synchronization:** Briefly defined as a mechanism to control access of multiple threads to shared resources to prevent data inconsistency. An example of a scenario where synchronization is needed (booking a single movie ticket by multiple people) is given. The use of the `synchronized` keyword to acquire locks on objects is mentioned.

    * **Difference between Processes and Threads:** A table summarizes the key differences based on control, resource sharing, dependency, memory space, and management.

    * **Wrapper Classes:** Defined as classes that convert Java primitives into reference types (objects). Each primitive type has a corresponding wrapper class (e.g., `Integer` for `int`, `Boolean` for `boolean`). The concepts of boxing (primitive to object) and unboxing (object to primitive) are explained with examples. Auto-boxing and auto-unboxing are also introduced. The main reason for using wrapper classes (to treat primitives as objects) is mentioned.

    * **Keywords: `final`, `finally`, and `finalize`:**

    * **`final`:** Explained as a keyword used to make variables constant (cannot change value), classes non-inheritable, and methods non-overridable. Examples are provided for `final` variables.

    * **`finally`:** Explained as a block used in exception handling that is always executed, regardless of whether an exception is thrown or caught. Its purpose for cleanup operations (e.g., closing database connections) is highlighted.

    * **`finalize`:** Described as a protected method of the `java.lang.Object` class that is called by the garbage collector before an object is reclaimed. Its use for cleanup activities related to the object is mentioned.

    **VI. Regular Expressions (Regex):**

    The document introduces regular expressions in Java using the `java.util.regex` package:

    * **Regex Definition:** Explained as a pattern used to match a sequence of characters.

    * **`Pattern` and `Matcher` Classes:** The core classes for working with regex in Java are introduced. An example demonstrates compiling a pattern using `Pattern.compile()` and creating a `Matcher` object using `pattern.matcher()`. The `matcher.matches()` method is used to check if the entire input sequence matches the pattern.

    * **Regex Character Classes:** Various character classes are explained with their meanings (e.g., `[abc]`, `[^abc]`, `[a-zA-Z]`, `[a-d[m-p]]`, `[a-z&&[def]]`, `[a-z&&[^bc]]`, `[a-z&&[^m-p]]`). An example demonstrates using `Pattern.matches()` with different character classes to test matching.

    * **Regex Quantifiers:** Quantifiers specify the number of occurrences of a character or group. Various quantifiers are explained (e.g., `X?`, `X+`, `X*`, `X{n}`, `X{n,}`, `X{n,m}`). An example demonstrates using `Pattern.matches()` with different quantifiers to test matching.

    * **Regex Meta Characters:** Meta characters provide shortcodes for common character sets (e.g., `.`, `\d`, `\D`, `\s`, `\S`, `\w`, `\W`, `\b`, `\B`). An example demonstrates using `Pattern.matches()` with different meta characters to test matching.

    * **Practical Regex Examples:**

    * **Finding a given pattern in a string:** An example shows using `Pattern.compile()`, `Matcher`, and `matcher.find()` to locate occurrences of a specific pattern within a string.

    * **Email Validation:** An example demonstrates using a regex pattern to validate the format of an email address using `Pattern.compile()` and `matcher.matches()`.

    **VII. Networking with Sockets:**

    The document provides a basic introduction to socket programming in Java using the `java.net` package:

    * **Socket Definition:** Explained as a connection between two programs running on the same or different networks. Server sockets and client sockets are mentioned.

    * **Client-Server Communication:** A simplified explanation of how a server listens on a specific port and a client connects to the server’s IP address and port to exchange data.

    * **Basic Socket Programming Example:** Code snippets for a simple server and client are provided. The server code demonstrates creating a `ServerSocket`, accepting client connections, reading input using `BufferedReader`, and writing output using `PrintWriter`. The client code shows creating a `Socket`, connecting to the server, sending data, and receiving data. The interaction between the server and client (reading input until “over” is received) is described.

    **VIII. Who is a Java Developer?**

    The document concludes with a brief definition of a Java developer as a computer software developer or programmer who integrates Java programming language knowledge to build applications.

    **IX. Practical Java Examples:**

    The document includes several practical Java program examples:

    * **ATM Machine:** A detailed explanation and code walkthrough of a simple ATM simulation program involving account management (checking and savings), balance inquiry, deposit, and withdrawal. The program utilizes classes for `Account`, `ATM`, and `OptionMenu`, demonstrating concepts like inheritance, user input, conditional statements (`switch`), and basic transaction logic.

    * **Text Editor:** A description and code explanation of a basic text editor application built using Java Swing. It showcases features like creating/opening/saving files, editing (cut/copy/paste), font manipulation (bold, italic, size, type), color selection (foreground/background), and undo/redo functionality. It highlights the use of Swing components (`JTextArea`, `JMenuBar`, `JMenuItem`), event listeners, and the undo/redo mechanism.

    **X. Common Interview Questions and Answers:**

    A section addresses common Java interview questions:

    * **What is JVM?** Explained as the software provided by the platform that provides the runtime environment to execute Java bytecode.

    * **What is Synchronization?** Explained as a mechanism to allow controlled access of multiple threads to a shared object, preventing memory consistency errors. The `synchronized` keyword and the concept of acquiring locks are mentioned.

    * **Difference between Processes and Threads:** Summarized in a table (already mentioned in the Threads section).

    * **What is a Wrapper Class?** Explained as a way to convert Java primitives into reference types (objects). Boxing, unboxing, auto-boxing, and auto-unboxing are defined with examples. The reason for using wrapper classes (OOP adherence, passing by reference) is given.

    * **What are the keywords final, finally, and finalize?** Explained with their respective purposes and usage (already mentioned).

    * **What is OOPs?** Defined as Object-Oriented Programming System, a paradigm centered around objects. The four core principles (Encapsulation, Abstraction, Inheritance, Polymorphism) are listed and briefly explained.

    * **What is an Object?** Defined as a basic unit of OOP, an instance of a class with state (data) and behavior (methods). The process of object creation in stack (reference variable) and heap (actual object) memory is explained.

    * **Difference between Stack and Heap Memory:** Key differences are summarized based on usage, accessibility, memory management (LIFO vs. generational/key-value), and lifetime.

    * **What are the different access modifiers in Java?** Four access modifiers (`public`, `private`, `protected`, and default/package-private) are listed and their visibility/accessibility scopes are explained.

    * **Difference between HashTable and HashMap:** Key differences are highlighted based on null keys/values, synchronization, performance, and inheritance.

    * **Difference between equals() and == operator:** Explained with a demonstration of comparing String objects. `==` compares object references (memory addresses), while `equals()` (in the case of `String`) compares the actual content of the objects.

    * **Predict the Output of a Java Program:** A simple program with method calls and arithmetic operations is given, and the expected output (11) is explained step-by-step.

    In summary, the provided source offers a comprehensive overview of fundamental Java programming concepts, supported by explanations and practical code examples. It covers essential language features, data structures, object-oriented principles, and common programming tasks, making it a valuable resource for learning Java.

    Java Loop Control Statements: for, while, do-while

    Java supports several types of loop control statements that allow you to execute a block of code repeatedly until a certain condition is met. The main types of loops in Java discussed in the sources are the for loop, the while loop, and the do while loop.

    1. for Loop:

    • The for loop in Java is used to iterate and execute a block of code multiple times when the number of iterations is known by the user.
    • It is recommended to use the for loop when the number of iterations is known.
    • A for loop has three basic parts:
    • Initialization: This step initializes the loop counter variable. For example, int i = 1.
    • Condition: This part specifies the condition that is evaluated before each iteration of the loop. The loop continues to execute as long as this condition is true. For example, i <= 10.
    • Increment or Decrement: After each iteration of the loop, the counter variable is updated. For example, i++.
    • Example:for (int i = 1; i <= 10; i++) {
    • System.out.println(i);
    • }
    • This for loop will print the value of i ten times, from 1 to 10.
    • A flow diagram of a for loop shows that initialization happens first, then the condition is checked. If true, the code inside the loop executes, followed by the increment/decrement, and the condition is checked again. If the condition is false, the loop terminates.

    2. Enhanced for Loop (or Advanced for Loop):

    • This type of for loop is used to iterate over elements in arrays and collections.
    • It simplifies the process of iterating through each element without needing to manage indices explicitly.
    • The syntax typically involves declaring a variable of the same type as the elements in the array/collection, followed by a colon, and then the array/collection itself.
    • Example:String[] arrData = {“John”, “Jerry”, “Ralph”, “Jim”, “Tom”};
    • for (String name : arrData) {
    • System.out.println(name);
    • }
    • This loop will iterate through the arrData array and print each name.
    • The flow of an enhanced for loop involves checking if there are any elements present in the array/collection. If true, it initializes a local variable with the first element and executes the loop body. This process continues for each element until all elements have been processed.

    3. while Loop:

    • The while loop evaluates a certain condition.
    • If the condition is true, the code inside the while loop is executed.
    • This process continues until the specified condition becomes false.
    • The condition to be specified in a while loop must be a Boolean expression.
    • Example:int i = 5;
    • while (i <= 15) {
    • System.out.println(i);
    • i += 2;
    • }
    • This while loop will print values of i starting from 5, incrementing by 2, as long as i is less than or equal to 15.
    • A flowchart of a while loop shows that the condition is checked first. If true, the code inside the loop executes, and then the condition is checked again. If the condition is false, the loop terminates.

    4. do while Loop:

    • The do while loop is similar to the while loop, but with a key difference: the condition is evaluated after the execution of the loop body.
    • This guarantees that the loop is executed at least once, regardless of whether the condition is initially true or false.
    • Example:int i = 20;
    • do {
    • System.out.println(i);
    • i++;
    • } while (i <= 20);
    • In this do while loop, the value 20 will be printed once, even though the condition i <= 20 becomes false after the increment.
    • A flow diagram of a do while loop shows that the statements inside the loop are executed first, and then the condition is checked. If the condition is true, the loop repeats; otherwise, it terminates.

    5. Nested Loops:

    • It is possible to have one loop inside another loop; this is known as a nested loop.
    • For each iteration of the outer loop, the inner loop executes completely.
    • Example:int[][] array = {{1, 2}, {3, 4}};
    • for (int i = 0; i < array.length; i++) {
    • for (int j = 0; j < array[i].length; j++) {
    • System.out.println(array[i][j]);
    • }
    • }
    • This example demonstrates a nested for loop iterating through a two-dimensional array. The outer loop iterates through the rows, and the inner loop iterates through the elements in each row.

    6. break Statement in Loops:

    • The break statement can be used to terminate a loop prematurely.
    • When a break statement is encountered inside a loop, the control flow immediately exits the loop and continues with the statement immediately following the loop.
    • Example:int[] numbers = {10, 20, 30, 40, 50};
    • for (int num : numbers) {
    • System.out.println(num);
    • if (num == 40) {
    • break;
    • }
    • }
    • In this example, the loop will print 10, 20, and 30, and then when num is 40, the break statement will be executed, and the loop will terminate before printing 50.

    7. Infinite Loop:

    • An infinite loop occurs when the condition of the loop never becomes false, causing the loop to execute indefinitely unless it is terminated externally or by a break statement.
    • A common way to create an infinite loop with a while loop is to use the condition true.
    • Example:while (true) {
    • System.out.println(“Edureka”);
    • // Some condition to break out of the loop should be present
    • // to avoid truly infinite execution.
    • }
    • This while loop will continuously print “Edureka”.

    The source also briefly mentions the if statement as a control statement, but it is a conditional statement, not a loop, as it does not involve repeated execution of code based on a condition. Similarly, the switch case is a selection statement for executing a single block of code among multiple cases.

    Java Switch Case Control Statement

    The switch case statement in Java is a control statement used to execute a single statement for multiple conditions. It provides a way to choose one block of code to execute from a set of possible cases based on the value of an expression.

    Here are some key aspects of the switch case statement based on the sources:

    • Purpose: To execute a single statement among multiple conditions.
    • Supported Data Types: The switch case statement can be used with short, byte, int, long, enum types, Character, String, and their corresponding wrapper types.
    • Syntax: A switch statement includes a switch expression and one or more case labels. The switch expression is evaluated once, and its value is compared with the values of each case label.
    • switch (expression) {
    • case value1:
    • // statements to be executed if expression equals value1
    • break;
    • case value2:
    • // statements to be executed if expression equals value2
    • break;
    • // …
    • default:
    • // statements to be executed if expression does not match any case
    • }
    • Rules for Usage:
    • One or n number of case values can be specified for a switch expression.
    • Case values must be unique. Duplicate case values are not permissible and will result in a compile-time error.
    • Case values must be literals or constants. Variables are not permissible as case values.
    • The break statement is used to terminate the statement sequence within a case. If a break statement is not used, the execution will “fall through” to the next case. The use of the break statement is optional.
    • There can be at most one default label. The default block is executed if the value of the switch expression does not match any of the case values. The default label is also optional and does not need a break statement after it.
    • Example: The source provides an example where an instrument number is used in a switch statement to print the name of the selected instrument:
    • int instrument = 4;
    • switch (instrument) {
    • case 1:
    • System.out.println(“piano”);
    • break;
    • case 2:
    • System.out.println(“drums”);
    • break;
    • case 3:
    • System.out.println(“guitar”);
    • break;
    • case 4:
    • System.out.println(“flute”);
    • break;
    • case 5:
    • System.out.println(“uka”);
    • break;
    • case 6:
    • System.out.println(“volin”);
    • break;
    • default:
    • System.out.println(“invalid”);
    • }
    • In this example, because instrument is 4, the output will be “flute”.

    In our previous conversation, we discussed various control statements in Java, including loops. The switch case statement is another important control statement that allows for conditional execution based on the value of an expression, offering an alternative to multiple if-else-if statements in certain situations. The source also mentions switch as one of the types of conditional statements available in Java.

    Java Object-Oriented Programming Fundamentals

    Object-Oriented Programming (OOP) is described as a programming style associated with programming concepts such as inheritance, polymorphism, abstraction, and encapsulation. Java is highlighted as one of the most sought-after skills and a language that follows an object-oriented programming paradigm. Whether you are a beginner or an experienced professional, understanding these key OOP concepts is crucial for building modular and maintainable code in Java.

    At its core, OOP is a methodology or a paradigm using which we can design our software solutions. It centers around the concepts of objects and classes. An object is a real-world entity, anything you can see, touch, or feel, and it has both state (properties or attributes) and behavior (methods). A class acts as a blueprint or a drawing of an object, defining how an object will look and behave through its properties and behaviors.

    The source emphasizes that having an object-oriented programming approach allows for creating different types of objects that share the same properties but have different values for those properties. OOP is presented as a bottom-up approach where you first think of objects and then start coding, contrasting with the top-down approach of procedural programming. It also offers better security through access modifiers compared to procedural approaches where data moves freely. Furthermore, OOP provides features like overloading, overriding, and inheritance that facilitate easier software design.

    The source identifies four major fundamentals or pillars of OOP:

    • Encapsulation: This is a mechanism where you bind your data and code together as a single unit. It also means to hide your data in order to make it safe from any modification. The analogy of a medical capsule is used, where the drug (data) is safe inside the capsule. Encapsulation ensures that the methods and variables of a class are hidden and protected. An example is given where user details like name, account number, email, and balance are encapsulated within a class.
    • Inheritance: This is where the property of an object will be acquired by the other object. It establishes an “is a” relationship, like a parent-child relationship. A child class (sub class) inherits properties and methods from a parent class (super class). The source discusses different types of inheritance in Java:
    • Single-level inheritance: One parent class and one child class.
    • Multi-level inheritance: A chain of inheritance, like parent to child to grandchild.
    • Hierarchical inheritance: Multiple child classes inheriting from a single parent class.
    • The source explicitly states that multiple inheritance or hybrid inheritance is not directly supported in Java; interfaces are used to achieve similar functionality. Inheritance promotes code reusability and extensibility, and allows for overriding methods in the child class to provide specific implementations. It can also be used for data hiding by making attributes private in the parent class.
    • Abstraction: This “refers to the quality of dealing with ideas rather than events”. It basically deals with hiding the details and showing the essential things to the user. When you make a call, you only see the option to pick up or reject, without knowing the internal processing. Abstraction helps to reduce code complexity. It can be achieved in two ways in Java:
    • Abstract classes: A class declared with the abstract keyword. An abstract class cannot be instantiated (you cannot create an object of it). It can contain abstract as well as concrete methods. An abstract class can act as a template for its subclasses. The runtime environment can construct the parent object of an abstract class before constructing the child object.
    • Interfaces: Known as a “blueprint of a class” or a collection of abstract methods and static constants. Each method in an interface is public and abstract and does not contain any constructor. Interfaces also help in achieving multiple inheritance in Java. A class implements an interface using the implements keyword.
    • Polymorphism: Meaning “taking many forms” (poly – many, morph – forms). It is “the ability of a variable, function, or an object to take on multiple forms“. Polymorphism allows you to define one interface or method and have multiple implementations. Java supports two types of polymorphism:
    • Runtime Polymorphism (Dynamic Polymorphism): A call to an overridden method is resolved at run time rather than at compile time. Method overriding is an example of runtime polymorphism, where a child class provides a specific implementation of a method already defined in its superclass. Upcasting (reference variable of the parent pointing to the object of the child) is a key aspect of runtime polymorphism.
    • Compile-time Polymorphism (Static Polymorphism): A call to an overloaded method is resolved at compile time rather than at run time. Method overloading is an example, where a class has two or more methods with the same name but different arguments (number, types, or order of parameters).

    In summary, Object-Oriented Programming in Java provides a powerful and structured approach to software development by organizing code around objects and classes and leveraging the principles of encapsulation, inheritance, abstraction, and polymorphism to create robust, modular, reusable, and maintainable applications.

    Java Inheritance: Concepts and Types

    Java Inheritance is a fundamental concept of Object-Oriented Programming (OOP) in Java where a child class (also known as a subclass or derived class) inherits the methods and properties of a parent class (also known as a superclass or base class). The source explains that inheritance establishes an “is-a” relationship between the classes, like the relationship between a parent and a child. For example, a Mobile is a Product.

    Here are the key aspects of Java Inheritance discussed in the sources:

    • Mechanism: Inheritance is achieved in Java using the extends keyword. When a class extends another class, it gains access to the non-private members (fields and methods) of the parent class.
    • Benefits:
    • Code Reusability: Inheritance promotes code reusability by allowing the child class to reuse the code already written in the parent class. This reduces redundancy and makes the code more maintainable.
    • Extensibility: Inheritance enables you to add new features or modify existing ones in the child class without altering the parent class.
    • Method Overriding: A child class can override (redefine) a method inherited from the parent class to provide its own specific implementation. This is a key aspect of achieving runtime polymorphism in Java.
    • Data Hiding: By declaring attributes as private in the parent class, you can control their accessibility in the child class, contributing to data hiding.
    • Types of Inheritance Supported by Java: The source outlines four types of inheritance in Java:
    • Single Inheritance: One child class inherits from one parent class. The source provides an example where a HadoopTeacher class inherits from a Teacher class.
    • Multi-level Inheritance: A child class inherits from a parent class, which in turn inherits from another parent class, forming a chain of inheritance. The source illustrates this with Class B inheriting from Class A, and Class C inheriting from Class B.
    • Hierarchical Inheritance: Multiple child classes inherit from a single parent class. The source gives an example where Class B and Class C both inherit from Class A. Another example involves a Restaurant acting as a parent class with child classes like ItalianRestaurant, ChineseRestaurant, and MexicanRestaurant inheriting from it.
    • Hybrid Inheritance: This is a combination of multiple inheritance and multi-level inheritance. The source mentions that while direct multiple inheritance (one class inheriting from multiple classes) is not supported in Java due to the “diamond problem,” hybrid inheritance can be achieved through the use of interfaces.
    • Multiple Inheritance: The source explicitly states that multiple inheritance is not directly supported in Java. This is to avoid the ambiguity arising from inheriting methods with the same signature from multiple parent classes (the “diamond problem”). Java uses interfaces to achieve a form of multiple inheritance by allowing a class to implement multiple interfaces.
    • “Is-a” and “Has-a” Relationships: The source also briefly touches upon “is-a” and “has-a” relationships. Inheritance represents an “is-a” relationship (e.g., BMW is a Car). A “has-a” relationship, on the other hand, involves a class having an instance of another class as a member (e.g., a BMW has an Engine). Inheritance is implemented using extends, while the “has-a” relationship is typically implemented through instance variables.

    In our previous discussion about OOP, we established that inheritance is one of the four pillars, enabling code reuse and forming hierarchical relationships between classes. The new source provides more detailed explanations and examples of the different types of inheritance in Java and clarifies the language’s approach to the complexities of multiple inheritance through interfaces.

    Java Exception Handling: A Comprehensive Overview

    Exception Handling in Java is a crucial mechanism to deal with unwanted or unexpected events that occur during the execution of a program at runtime and can disrupt the normal flow of the program instructions. The source emphasizes that if exceptions are not handled, it can lead to system failure. Java’s exception handling mechanism aims to manage these runtime errors so that the normal execution flow is not disrupted.

    Here’s a breakdown of exception handling in Java as discussed in the sources:

    • What is an Exception? An exception is an unwanted or unexpected event that occurs during program execution. It’s a problem that arises during the execution of a program and can happen for various reasons like invalid user input, a file not being found, network connection loss, or the JVM running out of memory.
    • Error vs. Exception: The source distinguishes between errors and exceptions:
    • An error indicates a serious problem that a reasonable application should not try to catch. Errors are typically impossible to recover from and are usually related to the runtime environment, such as virtual machine error or stack overflow error.
    • An exception indicates conditions that are reasonable for an application to try to catch. Exceptions can be recovered by handling them. They can be caused by the application itself (e.g., NullPointerException) or external factors (e.g., IOException).
    • How JVM Handles Exceptions: When an exception occurs within a method, the JVM:
    • Creates an exception object.
    • This object contains the name and description of the exception and the current state of the program where the exception occurred.
    • Throws this exception object to the runtime system (JVM).
    • The JVM then tries to find an appropriate exception handler to deal with the exception.
    • Exception Hierarchy: All exception and error types in Java are subclasses of the Throwable class, which is the base class of the hierarchy. Throwable has two main branches:
    • Exception: This class is used for exceptional conditions that user programs should catch. Examples include NullPointerException, RuntimeException, IOException, SQLException, ClassNotFoundException, and ArrayIndexOutOfBoundsException.
    • Error: This branch is used by the Java runtime system to indicate errors related to the runtime environment itself (JRE). Examples include VirtualMachineError and StackOverflowError.
    • Checked vs. Unchecked Exceptions: Exceptions in Java are categorized into checked and unchecked:
    • Checked Exceptions: These are exceptions that the compiler forces you to handle (using try-catch or declaring them using throws) because they are considered potential issues that might occur during normal operation (e.g., IOException, SQLException). They happen at compile time.
    • Unchecked Exceptions (Runtime Exceptions): These exceptions are not checked by the compiler, and you are not forced to handle them (e.g., ArithmeticException, ArrayIndexOutOfBoundsException, NullPointerException). They typically result from programming errors and happen at runtime.
    • Exception Handling Keywords: Java provides specific keywords to handle exceptions:
    • try: The try block encloses the code that might throw an exception.
    • catch: The catch block follows the try block and contains the code that handles a specific type of exception. There can be multiple catch blocks to handle different types of exceptions (multi-catch).
    • finally: The finally block follows the try (and optional catch) block and contains code that will always be executed, regardless of whether an exception was thrown or caught. This is typically used for cleanup operations like closing connections. The catch block is not required if a finally block is present.
    • throw: The throw keyword is used to explicitly throw an exception. You can throw built-in exceptions or create and throw your own user-defined exceptions.
    • throws: The throws keyword is used in the method signature to declare that a method might throw a certain type of exception. It doesn’t throw the exception itself but indicates that the calling code needs to handle it.
    • Nested try Blocks: A try block can be placed inside another try block, creating nested try blocks. This allows for handling exceptions in different scopes.
    • User-Defined Exceptions: Java allows you to create your own custom exception classes by extending the Exception class (or its subclasses). This is useful when the built-in exceptions don’t adequately describe a specific error situation in your application. User-defined exceptions are thrown using the throw keyword.
    • Passing Exceptions: The source provides an example of how exceptions can occur during operations like date format conversion and how these exceptions can be caught and handled.
    • Methods of Exception Handling: The source lists try, catch, finally, throw, and throws as the various methods of exception handling in Java.
    • Difference Between throw and throws:
    • throw is used to explicitly throw an exception, while throws is used to declare an exception that a method might throw.
    • throw is followed by an instance of an exception, while throws is followed by a class name.
    • throw is used within a method’s body, while throws is used with the method signature.
    • throw can throw only one exception at a time, while throws can declare multiple exceptions.
    • Difference Between final, finally, and finalize: These are distinct keywords with different purposes:
    • final: Used to apply restrictions on classes (cannot be inherited), methods (cannot be overridden), and variables (cannot be changed).
    • finally: A block used to execute important code regardless of whether an exception is handled or not.
    • finalize: A method used to perform cleanup processing just before an object is garbage collected.

    Previously, we discussed how exception handling is a key feature that sets Java apart as a programming language. This new source provides a comprehensive overview of the concepts and mechanisms involved in handling exceptions in Java, which is crucial for building robust and fault-tolerant applications.

    Java Full Course in 10 Hours | Java Tutorial for Beginners [2025] | Java Online Training | Edureka

    The Original Text

    hello everyone and welcome to this Java full course by urea Java stands as one of the most influential programming languages powering everything from mobile applications to large scale Enterprise systems over the years Java has become a preferred choice for developers due to its platform independence strong security features and object oriented approach from Android apps and web appli ations to cloud-based Solutions and financial systems Java is everywhere whether you are an absolute beginner looking to learn your first programming language or a season professional aiming to refine your Java expertise this course is designed to help you understand key concepts with practical examples and hands- on learning so now let us outline the agenda for this Java full course in this course We Begin by answering the fundamental question such as what is Java I’m guiding you through the Java installation process to get you started on the right foot we will cover Core Concepts such as operators in Java and conditional statements in Java which lay the ground work for more advanced programming next we will dive into Java oops Concepts exploring the principle of objectoriented programming that make Java a powerful tool for building modular and maintainable code we will walk you through abstract classes inheritance and polymorphism providing clear examples and Hands-On exercises to solidify your understanding as we progress we will tackle exception handling in Java to ensure your programs are robust and error resistant you will learn how to work with arrays and navigate the collections Frameworks which are essential for efficient data management the course will also explore Java strings and interfaces setting the stage for more complex data structures we then move into specialized topics such as data structures in Java including in-depth discussion on link list and hashmap as well as gener to enhance type safety in your programs file handling Java threats and regular EXP option in Java will expand your toolkit for developing Advanced applications while soit programming in Java opens up the world of network communications finally we will guide you on how to become a Java developer showcase real well Java projects and prepare you for the essential Java interview question and answers to help you land your dream job in the tech industry but before we jump into the course content please like share and subscribe to our YouTube channel and hit the Bell icon to stay updated on the latest day content from edura also edure rea’s Java certification training crafted by top industry experts is designed to help you become an oracle certified professional this Java course covers skills such as objectoriented programming Java collection s SOA and web services also working with jdbc design patterns and along with popular development tools so check out the course Link in the description box below now let’s get started with our first topic what is Java there are many controversies that say Java is going to die and it has become weak compared to its competitors so many beginners and experienced programmers have a doubt if it’s really dying to clear this out let us have a quick look on the major applications and websites once ABNB Uber Facebook Instagram Google Amazon Netflix and lot many we shall begin with little basic history of java now why did we recall all these applications and websites it is because all these sck Giants are in the use of none other than Java programming language it is the base of all data frames storage and parts of every single major application this entirely proves that Java is never going to die it is getting evolved every single day and it is one of the major reasons behind the development of much major softwares now that we have a good clarification let us move ahead and learn Java really fast Java is also used in multiple ways for example social media big data and Hadoop Android application development data science and artificial intelligence data security software testing and data analytics now that we have a good clarification let us move ahead and learn Java really fast we shall begin with a little basic and history of java firstly history of Java Java was invented by James Gosling in the year 1995 it was basically invented for interactive television for God’s sake it was found too advanced and was also able to perform extraordinary and sizable tasks than just a television thing now let’s get started with Java installation go to your Chrome browser then search Java download hit enter go to the second website because we want the Java from Oracle when you click on that link you’ll be redirected to a page that will look something like this here it says jdk 21 is latest long-term support release so we want jdk 22 and below that you can see that it is for different machines so if you want for Linux you can go ahead and directly download it and if you want for Mac OS you have to change it and same goes for Windows now in Windows also you can download it using compressed archive or MSI installer but we’ll go ahead with the normal installer so download has started I’ll just go to my download folder and let’s see so here is our jdk file now let’s go ahead and run it it will ask you for the permission after that just click on next and I’ll just go ahead with the default it is best to keep it default now it will install after that just close it to verify this we’ll just go ahead and type CMD and type Java Das Dash version now we have installed jdk now we’ll just download one of the IDS the most popular in the market is Eclipse so for that just go ahead and type Eclipse download you can see the first site just go ahead and click it after that you’ll see page that will look something like this here’s the download option you can go ahead and click on this it will redirect you to this page now latest one is 20246 so this is for the June 2024 you can directly install eclipse in your system or you can download the specific package now we are going to go ahead with Java so this is for our Java and we are using window so click on this one after that click on download let me go to the download folder let’s see now we can see this is there and after that just extract it here now let’s open this folder here you can see the eclipse application just click on that it might take a while after that you can see this I’ll just keep the default and click on launch now it is starting Eclipse you might see a welcome page that you have to close now I want to create a Java project so just going to go to files and new ones now here I’ll just go to others and find Java click on Java project and then next after this let’s name our new project my first project make sure you don’t have space in the name after that we are going to use Java ac22 after that configure J then click on ADD now make sure you have selected standard VM standard virtual machine click on next and just click on the directory go to your local disk then into the program files there you can see your Java folder just go ahead and click on that here there are two options jdk 21 and 22 now we’re going to go ahead with 22 and just select the folder now since jdk 22 came here I’ll just go ahead and finish it after that you can see jdk 22 is here just apply it and apply and close after that nothing just finish it so so we can see the my first project is here now I want to create a class main class so I’ll just go ahead and click on file and new and here we can see class click on that after that make sure you have used public and then clicked on public static void main string arguments I’ll name this default the package name should be there and the name I’ll go ahead with me after that just go ahead and click on finish now going see the main Java file is here so this is our first program now let’s go ahead and run our favorite hello world program make sure you are typing correctly and don’t forget to use semicolon at the end now just go ahead and click on run over here it will ask you that you want to use yes so this is the console where you’ll get your output and since we havep print L and hello world we get the hello world now let’s try something else I’ll copy this and then paste it again now this time I’ll do please subscribe now let’s run it again it will start compiling again and if you don’t want to get annoyed by it just click always allow and now you know how to install Java and also if we have tried a simple code using it some of the major features are as follows firstly open source Java since its birth till today is an open source product there are many speculations that say Java is not free anymore but to be sure Java is still free and the open jdk and Oracle jdk are completely similar to each other other that means you can typee your code using Oracle jdk and execute it in open jdk and the jdk versions are also available for all the types of operating systems such as Windows Linux Mac and many other flavors of Linux followed by the first feature the next feature is high performance Java is an interpreted language so it will never be as fast as a compile language like C or C++ but just Java enables high performance with the use of just in time compiler so here Java provides us high performance followed by that the next feature is multi-threading Java multi-threading feature makes it possible to write a program that can do many tasks simultaneously the benefit of multi-threading is that it utilizes the same memory and other resources to execute multiple threats at the same time like while typing grammatical errors are checked along followed by this feature the fourth feature is secure when it comes to Security Java is always the first choice with Java secure features it enables us to develop virus free and temper free systems Java program always runs in a Java runtime environment with almost null interaction with host operating system hence it is most secure followed by this the next feature is Java’s platform independency unlike other programming languages such as C or C++ Etc which are compiled into platform specific machines Java is guaranteed to be right once Run Anywhere language on compilation Java program is compiled into bite code this bite code is platform independent and can be run on any machine plus this bite code format also provides security any machine with Java runtime environment can run Java programs followed by this the next feature is portability the crossplatform feature enables the Java code to be highly portable in Java everything is an object which has some data and behavior Java can be easily extended as it is based on objectoriented programming model the last but not the least feature of java is its robust nature Java makes an effort to eliminate error prone codes by emphasizing mainly on compile time error checking and runtime error checking but the main areas in which Java improvised were memory management and mishandled exceptions by introducing automatic garbage collector and exception handling we have previously examed Java’s key features and what sets it apart as a programming language in the operators in Java Java module Learners will learn about the various operators available in Java and how to use them to perform different types of operations within their code the operators in a programming language are specific or special symbols used along with the variables on numbers so as to carry out some specific operations the various operators available in Java are as follows there un Operator athematic Operator shift operator relational op Operator bitwise Operator logical Operator ternary Operator and finally the assignment operator we shall discuss about each and every single operator available in Java firstly the unary operator the Java Unity operator requires only one operant the UN operators are used to perform various operations such as incrementing or decrementing a value by one negating an expression inverting the value of aoan and many more now let us execute a simple example of unary operator in Java as you can see this particular example is based on unary operators so here I have declared a value 10 to the variable X of integer data type and now I’m trying to increment the value of x by 1 by adding the unary operator increment this particular incrementation is called post increment followed by that we have a similar increment operator which is placed before X which says it is a pre-increment operator followed by that we will try to decrement the value of x by1 by using post decrement operator where we will provide the decrement operator after X and similarly the same decrement operator is used before X when which says that it is a pred decrement operation now let us try to execute our program and see the output you can see the output has been successfully generated now followed by this let us move ahead and understand the athematic operator Java athematic operators are used to perform addition subtraction multiplication and division they act as basic mathematic operations now let us see a basic example for athematic operators you can see I have provided two variables that is a and b a has the value 10 and B has the value 5 so the basic arithmatic operations that I will be performing are addition subtraction multiplication division and modulus so the addition symbol is carried out by plus subtraction is minus is multiplication is star division is forward slash and modulus is modulus symbol these are common now let us execute this and see the output you can see all the athematic operations have been successfully executed and the output is also generated so you can see the addition is 15 subtraction is 5 multiplication is 50 division is 2 and modulus S zero now with this let us move ahead into the next type of operators which are none other than the shift operators the shift operator is used to shift the bits in the value to the left or right side of the specific number of times we have two types of shift operators which are left shift operator and the right shift operator the left shift operator moves the specific number of bits towards the left side and the right shift towards the right side now let us execute a sample program to understand the shift operators in a much better way you can see I have used shift operator here which is left shift and I’m using left shift operator to move two bits of 10 towards left side and three bits of 10 towards left side and two bits of 20 towards left side and four bits of 15 towards left side so basically what happens here is 10 will be converted into to binary numbers and similarly all the other numbers will be converted into binary numbers and the number of bits which we require that is two will be shifted in that particular converted binary number and the new number generated will be provided in decimal numbers and that will be our output let us execute this program and see our output you can see that the program has been getting executed and the new numbers are been generated here as the output so 10 after shifting two bits towards left will be generating 40 and 10 after shifting three bits towards left will generate 80 and similarly 15 after shifting four bits will generate in 240 now that we have understood the shift Operator Let us move ahead and understand the relational operator the Java relational operator is used to compare the operant on both the sides of the relational operator this particular operator judge whether one of the operant is greater or lesser or equal or not equal to the other operator now the basic operation what a relational operator does is it compares the two numbers for example if you have a as five and B as 10 and if you compare if a is greater than b then the result will be false because a is smaller than b so this is what a relational operator basically does now let us go through a sample program to understand relational operators in a much better way here you can see that I have declared three variables that is a b and c a has 10 B has 5 and C has 20 now what we doing is we comparing a is less than b and a is less than C and followed by that we’re comparing again a is less than b and a is less than C so this example is both for relational operator as well as logical operator so The Logical operation which we have used is and now let us try to execute this program and see the output and there you go the result is false because a is greater than b but not less than b similarly a is less than C but the result of and logical operator is false because to become true both sides of the operant should be true now let us move ahead and understand bitwise operator basically the bitwise operator is applied on the bits for example if we provide a number to the variable that particular number will be converted into binary format and after that the operation will be applied on the bits one by one let us execute a sample program to understand bitwise operators in a much better way so this particular example is based on bitwise operators here also we have the same three values that is a = to 10 B is = to 5 and C isal to 20 now we’re performing bitwise operations on the particular variables and comparing them using a logical operator which is and now let us try to execute this program and see the output you can see that the program has been successfully executed and the output is been printed but the value of a is been changed here from 10 to 11 this happened because it is based on the bitwise operation which we performed here that is A++ post increment now followed by this let us move ahead and understand the next type of operators that are The Logical operators The Logical operators are the operators which are applied on both the ends or both the operant so the basic logical operators supported in Java programming language are and or and not the and operator is used to perform logical operation on two operant and it will result in a Boolean result so to become a true Boolean result and should be having both the operant as true and in order to result a True Value either one of the operant should be true and when it comes to not not is just a simple logical operator dat which negates the existing value that means if the value is true then after the not operation the value will be converted into false now let us see one basic example to understand logical operators in a much better way you can see the previous example is the best fit to understand logical operators you can see the value here was false since a is greater than b so this value will result in a false and this value will result in false so false and false will result in false now moving ahead we shall understand the next type of operators which are the ternary operators the ternary operator is simple but highly powerful operator used in Java programming language this particular ternary operator will reduce the code length to one line to understand this in a much better way let us execute a sample program here you can see that we have two different values which are A and B A has 2 and B has five so the ternary operator is this particular statement here we have also allocated a new variable which is of integer type which is minimum so minimum is equals to a less than b if a is less than b then minimum is a and else B is equals to minimum so this particular operation is minimum here a is compared if a is truly less than b then a will be printed into minimum else B will be printed into minimum and finally we shall print the value which is stored into minimum now let us execute this and see the output you can see that the value of a which is two is been printed here after executing the ternary operator present in the line number seven now let us move ahead and understand the next type of operator which are the assignment operators the assignment operators used in Java programming language are simply used to allocate the resultant memory into the variable which is located in the left side of the operant the basic assignment operators used in Java programming language are equals to and double equals to to understand assignment operators in a much better way let us execute a sample Java program so this particular program is based on assignment operations here we have two different values which are A and B A isal to 10 and B is = to 20 now what we are basically doing here is using the assignment operator and adding value 4 to the value 10 and decrementing value 4 to the value 20 this particular operator used here is the assignment operator now the result will be AAL to 14 and B is equal to 16 now let us execute this program and see if the output will be correct or not you can see the output is as expected with this let us move ahead and understand the control statements in Java a control statement in Java is a statement that determines whether the other statement will be executed or not in simple terms it controls the flow of a particular program in Java now let us see the control statements which are present in in Java so the control statements supported in Java are if else Loop while loop do while loop for Loop and switch case so these are the basic control statements that each and every programmer must be known with now let us understand each and every one of these control statements and also execute a basic program to understand them in a much better way firstly we shall deal with the if statement or if control statement in this statement if the condition specified as true the if block will be executed otherwise the else block will be executed we shall execute a sample program to understand the IFL statement in a much better way so this particular program is based on if else control statement here we have the input a equal to 15 the first if condition will be in case if a is greater than 20 then the first print of statement should be executed else the other print of statement should be executed now let us execute this program and see the output since we know 15 is less than 20 we should be expecting the second set of statements to be executed which is a is less than 10 and hello world you can see the message has been successfully printed here followed by this let us move ahead and understand the next type of control statements which are supported in Java that is none other than the V Loop known as the most common Loop the V Loop evaluates a certain condition if the condition is true then the code is executed the process is continued until the specific condition turns out to be false the condition to be specified in while loop must be a Boolean expression an error will be generated if the type is used is not an integer type or a string type let us execute a basic example to understand this while loop in a much better way as you can see this particular example is based on while loop here we have a variable I which has the value five here the condition specified in by Loop is I should be less than or equal to 15 until then we have to execute the print of statement which prints the value of I and after that the value of I will be incremented by two now this particular set of Loop will be executed until the value of I is less than or equal to 15 once after this condition becomes true the loop will be terminated let us try to execute this program and see the output you can see the values 5 7 9 11 13 and 15 are printed successfully once after the value of I reached to 15 the loop got terminated and it exited the loop now followed by this let us understand the next type of loop which is the do while loop the do while loop is completely similar to The V Loop the only difference is that the condition of the do V Loop is evaluated after the execution of the loop body this guarantees that the loop is executed at least once now let us try to execute a sample program to understand do V Loop in a much better way you can see that this particular example is based on dowi Loop here we have a variable I which stores the value 20 so once after the value is been declared we have the Dov Loop so inside the Dov Loop we are supposed to print the value of I the value of I will be incremented by one every single time the loop is executed now the loop body of duy loop is finished so the condition is placed at the end of DUI Loop which says the the I value should be less than or equal to 20 until then this particular Loop is valid now the only suspense between du V Loop and V Loop is the do V Loop will be executed at least for once without checking the condition because the condition is placed after the do Loop body now let us try to execute this and see the output you can see that the Loop has been successfully executed the value 20 is printed only for once because the value of I which we declared was 20 and it is true according to the condition so the control got terminated let us move ahead and understand the next type of loop which is the fall Loop the fall Loop in Java is used to iterate and evaluate a code multiple times when the number of iterations is known by the user it is recommended to use the fall Loop to understand the fall Loop in a much better way let us try to execute one basic example based on Fall Loop so this particular example is based on for Loop here we have the value of i as 1 and the condition is I is less than or equal to 10 and after that a post increment so in this particular statement we will be printing the value of I 10 times until the for Loop is true the three basic parts of a follow Loop are declaration condition and increment or decrement so this particular first block which is I is equal to 1 is the Declaration part and after that I is less than or equal to 10 is the condition part and lastly i++ which is the increment is the last part now let us try to execute this program and see the output you can see that the program has been successfully executed and the value of I is printed for 10 times which is 1 2 3 4 5 6 7 8 and 9 and 10 now followed by this let us understand the next type of loop which is the switch case a switch statement in Java is used to execute a single statement for multiple conditions the switch case statement can be used with short bite int long enum types Etc certain points must be noted while using the switch state M which are one or n number of case values can be specified for a switch expression case values that are duplicate or not permissible a compile time error is generated by the compiler if unique values are not used next the case value must be a literal or a constant variables are not permissible the last condition is usage of break statement is made to terminate the statement sequence it is optional to use the statement if the statement is not specified the next case is automatically executed now let us try to execute a sample program to understand switch case in a much better way you can see that this particular program is based on switch statement the switch condition is instrument now here the condition is that we supposed to select the instrument number four which happens to be flute now we have a various set of instruments present in our case which are piano trums guitar flute Uka volin and lastly the default statement which is invalid let us try to execute this program and see the output since we have provided our selection to be four which happens to be flute the output should be directly generated as flute now let us run this and see the output you can see that the program has been successfully generated and the selected instrument flute is been displayed in the console now moving ahead we shall understand the objectoriented style of programming in Java object-oriented programming is a programming style which is associated with programming Concepts such as inheritance polymorphism abstraction and encapsulation most of the popular programming languages like Java C++ Ruby Etc follow an object-oriented programming Paradigm as Java being the most sought after skill skill we will talk about objectoriented programming Concepts in Java an object based application in Java is based on declaring classes creating objects from them and interacting between these objects the first objectoriented programming style we will be discussing today is encapsulation encapsulation is a mechanism where you bind your data and code together as a single unit it also means to hide your data in order to make it safe from any modification what does this mean the best way to understand encapsulation is to look at the example of a medical capsule where the drug is always safe inside the capsule similarly through encapsulation the methods and variables of a class will be hidden safe to understand encapsulation in a much better way let us go through a simple example so this particular program is the example for encapsulation here we have encapsulate the data members which are the name of the user which is Ravi and account number of the user and email of the user and the am which is present in the particular users’s account now we will try to execute this program and print the details of the user you can see the program has been successfully executed and the account number of the user has been displayed here along with his name and mail ID along with the balance amount which is present in this particular account so this particular example was based on encapsulation now let us move ahead and understand the next type of objectoriented programming style which is inheritance as we can see in the image a child inherits the properties from his father similarly in Java there are two classes they are parent class which is also called as a super class or a base class and the next type of class is a child class which is also called as a subass or a derived class a class which inherits the properties is known as a child class whereas the class whose properties are inherited is known as the parent class inheritance in Java is further classified into four types they are single inheritance multi-level inheritance hierarchial inheritance and lastly the Hybrid inheritance the first one single inheritance in single inheritance one class inherits the properties of another it enables a derived class to inherit the properties and behavior from a single parent class this will in turn enable code usability as well as add new features to the existing code here Class A is your parent class and Class B is your child class which inherits the properties and behavior from the parent class followed by that we have multi-level inheritance when a child class is derived from a parent class which happens to be also derived from from another parent class that is a class having more than one parent class but at different levels such type of inheritance is known as multi-level inheritance if we talk about the flowchart Class B inherits the properties and behaviors of Class A and Class C inherits the properties of Class B so here Class A is the parent class of Class B as well as Class C so in this case Class C implic L inherits the properties and methods of Class A along with the class B this is what we call as a multi-level inheritance followed by this we have hierarchial inheritance when a class has more than one child class or subclasses in other words more than one child class have the same parent class then such type of inheritance is known as hierarchial if we talk about the flowchart then Class B and Class C are the child classes that are inherited from the same parent class that is Class A followed by that the last type of inheritance is called the Hybrid inheritance the Hybrid inheritance is a combination of multiple inheritance and multi-level inheritance since multiple inheritance is not supported in Java it leads to ambiguity this type of inheritance can be only achieved through interfaces we will execute examples for each one of the type of inheritances the first example that we will be executing is based on single inheritance so in this particular example we have the parent class as teacher and the child class as Hado teacher so here what we are trying to do is we are trying to inherit the properties of the parent class teacher into the child class Hado teacher let us try to execute this program and see the output you can see that the program is been successfully executed and the properties of the parent class have been successfully inherited into the child class that is the college name designation of the teacher and the main subject which he or she will be teaching now followed by this we shall try to execute the next type of example based on inheritance repeat so the next type of inheritance is the multi-level inheritance this particular example is based on multi-level inheritance where one child class inherits the properties of multiple parents at different levels one happens to be the first class two happens to be the next class and lastly three happens to be the last child class which extends the properties of one and two let us try to execute this program and see the output you can see that the program has been successfully executed and the output has been successfully generated on the console edure Rea happy learning followed by this we shall move ahead and understand the next type of inheritance so this particular example is based on hierarchial inheritance where two or more classes inherit the properties of one parent class so here the class one happens to be the parent class and class two and three are the child classes which are inheriting the properties from the same parent class which happens to be one let us try to execute this program and see the output you can see that the program has been successfully executed and the output has been generated which says Eda have be learning now we have discussed all the three inheritances which are single level inheritance multi-level inheritance and hierarchial inheritance the last type of inheritance which happens to be multiple inheritance or Hybrid inheritance happens to be not supported in Java to make this happen Java has come up with a new idea which is called as interface so we shall discuss about Java interfaces in the further chapters so the next Concept in object-oriented style of programming is the abstraction abstraction refers to the quality of dealing with ideas rather than events it basically deals with hiding the details and showing the essential things to the user if you look at the image here whenever you get a call we get an option either to pick it up or just to reject it but in reality there is a lot of code that runs in the background so we don’t know the internal processing of how a call is generated that’s the beauty of the abstraction therefore abstraction helps to reduce the code complexity you can achieve abstraction in two ways that is by using an abstraction class or an interface we shall understand abstract classes first an abstract class in Java contains abstract keyword what does the abstract keyword mean if a class is declared abstract it cannot be instantiated which means you cannot create an object of an abstract class also an abstract class can contain abstract as well as concrete methods now followed by that the next one is an interface interface in Java is known as a blueprint of a class or you can say it is a collection of abstract methods and static constraints in interface each method is public and Abstract but does not contain any Constructor along with abstraction interface also helps you to achieve multiple inheritance in Java we shall execute one single example for each one of these to understand abstraction in a much better way so the first example that we will be executing will be based on abstraction and the abstract class which is declared here is person so to declare this particular class we have used the keyword abstract so this particular abstract class consists of the following segments the first one is the name of the person gender of the person after this we have the class which inherits or extends this particular abstract class which is student so inside student we have a variable called as student ID which is declared as private now the elements from the abstract class will be extended into this particular student class and the output will be generated so let us execute this program and see the output you can see the program got successfully executed and the output is being generated here we have the name of the student as Priya and gender female similarly Karan Kumari John and their genders and also their degrees Karan Kumari and John are puring engineering and Priya is not studying so now let’s move ahead and understand interfaces in Java this particular example is based on interface and here the interface that we have declared is about a basic calculating functions which are add substract multiplication and divide so here we have declared the interface using the keyboard interface and as you can see we don’t have any Constructors inside this interface and followed by this this is our main class which is student which will implement the interface math to perform the addition subtraction multiplication and division operations let us try to execute this program and see the output now you can see the program got successfully executed and now the program is asking us to enter any two digits to perform addition let us enter 10 and 20 and you can see the sum has been successfully generated now it is asking values to enter to perform substraction let us enter 10 and five you can see the output as five now it is asking for values to perform multiplication let us enter 10 and 20 you can see the product as 200 and finally the division operation let’s enter 20 and five you can see the quotient is four so this is how face works now followed by this the fourth and last type of objectoriented programming style is none other than the polymorphism polymorphism means taking many forms where poly means many and morph means forms it is the ability of a variable function or an object to take on multiple forms in other words polymorphism allows you to Define one interface or method and have multiple implementations polymorphism in Java is of two types first runtime polymorphism and compile time polymorphism in Java runtime polymorphism refers to a process in which a call to an overridden method is resolved at run time rather than at compile time in this a reference variable is used to call an overridden method of a super class at runtime method overriding is an example of runtime polymorphism we understand method overwriting and method overloading in the further Concepts that is the advanced Java Jaa programming Concepts and followed by that we have the next compile time polymorphism in Java compile time polymorphism refers to a process in which a call to an overloaded method is resolved at compile time rather than at run time method overloading is an example for compile time polymorphism method overloading is a feature that allows a class to have two or more methods having the same name but with different arguments passed to the methods are different and like method overriding arguments can differ in number of parameters passed to the method data types of the parameters sequence of data types when passed to a method with this we come to an end of objectoriented style of programming in Java now let us continue with Advanced Java Concepts the first amongst the advanced concepts in Java is exception handling so first of all what is an exception an exception is an unwanted or unexpected event which occurs during the execution of a program at runtime that disrupts the normal flow of the program instructions error versus exception error an error indicates serious problem that a reasonable application should not try to catch whereas exception indicates conditions that are reasonable to an application that might try or to catch now how does a jvm handle exception there is a method called default exception handling whenever inside a method meod if an exception is occurred the method creates an object known as exception object and hands it off to the runtime system that is jvm the exception objects contain name and description of the exception and the current state of the program where the exception has occurred so this is how the exception is handled let us try to execute a simple program based on exception handling to understand it in a much better way so this particular example is based on exception handling in in Java so this particular program is related to divide by0 exception where the given number will be divided by 0 so anything cannot be divided by 0 so this particular exception is called as divide by0 exception and we cannot divide any number by zero let us run this program and see the output you can see that the program has been successfully executed and the output is been generated which says can’t divide it by zero now moving ahead the next Advanced Java concept is multi-threading multi-threading in Java is a feature that allows concurrent execution of two or more parts of a program for maximum utilization of CPU each part of such a program is called as thread threads are lightweight processes within a same process now let us try to execute a sample program to understand multi-threading in a better way now this particular example is based on multi-threading in Java we’ll be creating multiple threads like one or two and we will be seeing if that particular thread is existing and running or not now let’s try to execute this program and see the output don’t worry about the codes we will send you at your request if you provide your mail ID now you can see threads are created here thread one and thread 2 have got created and thread one is running thread 2 is getting started and also thread 2 is also running now you can see the functionalities of thread 1 and thre to and they are existing safely now with this let us move ahead into the next concept which is call by value and call by reference in Java call by value and call by reference in Java is just function calling firstly call by value means calling a method or a function with a parameter as value through this method the argument value is passed to the parameter while on the other hand call by reference means calling a method with a parameter as a reference which is the address of the value let us execute one example each to understand them in a better way so this particular example is based on call by Value method here we will be providing the values of A and B and call the function swap so this particular function is based on swapping the values between A and B so the values of a is 30 and the value of B is 45 so after calling this swap function the values of A and B will be swap now let let’s execute this program and see the output as you can see the programs has been successfully executed and before swapping the values were 30 and 45 now the values are exchanged now with this let us move ahead and execute an example based on call by reference so this particular example is based on call by reference we are performing the same swap function here but here we are providing the address of the values now let’s run this program and see the output you can see the program has been EX executed and the values have been successfully swapped now let us move ahead and understand the next Advanced programming Concept in Java that as method overloading and Method overriding method overloading is a feature that allows a class to have more than one method having the same name if their arguments list are different it is similar to Constructor overloading in Java that allows a case to have more than one Constructor having different arguments list now let us execute a sample program to understand method overloading in Java so this particular example is based on method overloading in Java here we have two different methods on the same name the name is ADD and the first method is having only two variables and the second method is having three variables now let us try to call these functions and see the output you can see both the functions have been executed and the sum is been displayed in the output console here so this was method overloading now let us move ahead and understand method overriding in Java in any object-oriented programming language overriding is a feature that allows a subass or a child class to provide a specific implementation of a method that is already provided by one of its super classes or parent classes method over adding is one of the major way in which Java can achieve runtime polymorphism now this particular example is based on method overriding here we have two different functions so the first function is in the parent class which is move and the second function is with the same name which is move that is existing in the child class that is dog both these methods are implemented in the main class and the functionalities of both the methods are included in the main class now let’s try to execute this program and see the output as you can see the program has been successfully executed and the output has been generated now let us dive into the conditional statements which are available in Java the conditional statements describes the compiler to carry out the execution of a particular code segment in a program until the condition is satisfied the types of conditional statements available in Java are ternary operator F operator LF operator LF ladder nested if breake and switch let us execute some examples related to all these conditional operators one by one firstly we shall execute an example based on if loop as you can see this particular example is based on if Loop here I’m providing a number which is a negative integer number minus 10 and here I’m providing an if condition which says that if the number is greater than zero then I should be printing a prin of statement which is number is positive else my interpreter will be printing the message the number is negative now let us try to execute this program and see how does it work as you can see the output has been generated which says the number is negative since the number which I provided was a negative integer number the condition here is failed and the message which was lying outside the if Loop which is the number is negative is been printed here now let us execute the next control statement where which is the lsf statement as you can see this particular example is based on lsf Loop here I’m trying to provide an integer value to the variable a according to my condition if the number which I have included results in a modulus is equals to 0 then I should be printing the message as even number else I should be providing the number as odd number now let us try to execute this program and see how does it work now as you can see the output screen is asking me to enter an integer value let us try to input an even number as you can see I have inputed an even number and I have received an output as an even number as the condition of the if Loop is been satisfied now let us try to input an odd number and see if the else Loop is working properly or not as you can see it is asking for an input now let us try to input an odd number which is 7 and see the output as you can see the output is generated as an odd number which means the L Loop is working fine now let us try to execute another example based on lcf Loop here I’m trying to execute an example based on ear I’ll be trying to input an year which the program will find out if it is a leap year or not the condition I have provided for if statement is if the ear modulus is equals to equals to Z and year modulus 100 is not equals to 0 or E modulus 400 is equals to equals to 0 then I must print the the message the ear you have entered is a leapia this means all the conditions which are stated in the if Loop must be true else it should print a message which says the ear you have entered is not a leap year now let us try to execute this program and see how does it work as you can see the output screen is asking me to enter an ear now let us try to enter a leapia as you can see the conditions which are provided in the if statement are true and we are printing the message the ear you have entered is leapia now let us try to provide an input which is not a leapia as you can see now it is asking for an Year let us input the present year which is 2019 and see if it is a leap year or not as you can see the conditions which were provided in the if Loop are not satisfied and the program is printing the message which is the year you have entered is not a leap year now let us try to execute some programs based on F’s ladder in this particular example we are trying to execute LF fladder condition as you can see here I’m trying to provide an integer typee input to the variable Choice according to the choices I have provided the first choice will select a sedan type class car and the second choice will select SUV type Class Car the third choice will provide Sports type class car and the fourth choice will provide crossbreed type class car if the provided input is neither of all these four then it will provide the last message which is invalid Choice as you can see the first F ladder will compare the choice if the choice is equals to equals to one then it will print the message sidan class and the next lsf ladder will compare the choice if it is equal to equal to two if it is equals to two then SUV class will be printed and in the next lsf ladder if the choice is equals to three then Sports class message will be printed and followed by that lsf ladder you’ll have the next ladder which will compare the choice to be equals to equals to 4 if it is true then crossb segment message will be printed if neither of all these conditions are true then finally an else block will print a final message which says it is an invalid choice now let us try to execute this program and see how does it work as you can see the program has been successfully executed and it is asking for a choice now let us try to select SUV type vehicle for that we need to provide an input as two as you can see the SUV class me is successfully selected now followed by this program let us execute nested F condition this particular example is based on nested if condition in this particular example I’m going to provide inputs for three numbers ns1 is = to 20 N2 is = to 30 and n 3 is equal to 10 and finally we have another integer type variable which is greatest using the netive condition we’ll try to find out the greatest number out of all these three as you can see the first if statement has the condition if N1 is greater than equal to N2 then it should enter an inner F Loop inside the inner F Loop we have a condition which says if N1 is greater than or equal to N3 then it should enter the loop and print greatest is equal to N1 else it should print greatest is equal to N3 after the completion of the if condition if neither of the statements which are provided in the if condition are true then the control will flow into the else condition inside the else condition we have an if condition which states if N2 is greater than or equal to N3 then it should print N2 else it should print n three now the final output will be generated along with the message which the largest number is and the greatest value now let us try to execute this program and see how does it work as you can see the output has been successfully generated and it says the largest number is 30 now let us try to execute an example based on ternary operator this part particular example is based on ternary operator as you can see I’m trying to provide an input to two numbers which are A and B which will be integer values this particular statement is our ternary operation this states that if the provided input a is greater than b then a should be declared as the greater number else if the condition is false then B should be declared as the greater number now let us try to execute this program and see how does it work as you can see the program has been successfully executed and it is asking for a value for the variable a let us enter 10 now it is asking for a value to the variable P let us enter five now let us see the output as you can see the output is 10 this states that the number a is greater than number B now let us try to execute an example based on switch conditional statements so this particular example is based on switch conditional statement here I’ll be ask a question as enter any month so I’ll be entering an integer value to the variable month if the input value is one then the program will execute January if the input value is two the program will execute February similarly if the input value is 12 then it will execute December and if neither of the cases match to the input which I provide then it will execute a default message which will be invalid input now let us try to execute this program and see how does it work as you can see the program has been successfully executed and it is asking me to enter any month let us try to input three as you can see see March is the message which has been printed by the program now let us try to execute an example based on break statement as you can see in this particular example I have provided an integer array which has the values 10 20 30 40 and 50 and here I’m trying to print the same array using a print statement with a provided condition if the number is equal = to equals to 40 then the follow Lo should terminate at that particular instance now let us try to execute this program and see how does it work as you can see the output has been successfully generated and the values 10 20 and 30 are printed but 40 and 50 are not printed because at this particular if statement we have provided a condition that if the number is equals to equals to 40 then the control flow should break so these were the few examples for conditional statements now let us continue with our Loops in Java we have three types of Loops firstly the for Loop next is wi Loop and finally we have do wi Loop the first type of loop is the for Loop the for Loop is a conditional flow statement which allows you to execute a specific code segment for a finite number number of iterations for a follow Loop we have three arguments namely initialization variable the condition variable and the counter variable which might be either increment or decrement now let us try to execute a program to understand for Loop in a better way before we execute an example of for Loop let us see the flow diagram of the for Loop here we have the initialization Step at the first and later the control flow will enter a conditional statement if the conditional statement happens to be true then a particular code segment or a particular set of statements are executed and after that the control flow enters into the increment or decrement variable and the variable will be incremented or decremented according to the condition provided once after the increment or decrement process is finished then the control flow will again enter into the conditional statement and verifies the condition if the condition is true then the same Loop will be executed else the control will exit from the condition statement now let us try to execute a program to understand this in a better way this particular example is based on fur loop as you can see I have a variable by the name ARR data which is of string type and this particular variable holds five elements which are John Jerry Ralph Jim and Tom which happen to be the names of the employees of a particular company now we will be using a follow Loop to display the names of these employees this happens to be the for Loop where we have the initialization variable which is I is equals to 0 and followed by that we have a conditional statement which is I is less than ARR data. length and finally we have an increment variable which is I ++ now let us try to execute this for Loop and see how does it work as you can see the loop has been successfully executed and we have our output here let us move on to the next example of fall Loop which is either called as enhanced for Loop or Advanced for Loop in this particular for Loop we will be having a conditional statement at the very beginning of the program the control flow enters the conditional statement and finds if there are any elements present in the array or not if the statement is true then the control flow will enter the initialization statement where a variable will be initialized once after the initialization is finished the control flow will directly enter into the condition statement of the program if there are any elements present in the program and the condition is true then it will execute the set of statements and initialize the local variable and once after the local variable is initialized then the control flow will continue into the same loop again if there are no elements present in the array then the control flow will exit the condition and stop and here as you can see if we come back into the initial conditional statement if there were no elements present in the array then the condition will become false and the control flow will directly exit the condition and comes to a stop now let us try to execute a program to understand this Advanced fall Loop or enhanced fall Loop in a much better way as you can see I have considered the same example of the list of employee names and here we are using the advanced for Loop which states that the control flow must enter the array and print all the elements present in the array according to their index now let us try to execute this program and see how does it work once after the control flow will enter into the array all the elements present in the array are printed until the last index value as you can see the program has been successfully executed and the output has been generated with this let us try to execute nested follow Loop before executing an example let us try to understand the flow diagram of the nested for Loop in a nested for Loop the program will begin at start and the control flow will encounter the first Loop statement after that the control flow will enter into the condition if the condition is true then it will enter into the inner fall Loop if the condition is false then the control flow will directly exit the first outer fall Loop now let us see if the condition is true once the condition is true then the control flow will enter into the inner for Loop and inside the inner for Loop it will encounter a condition statement if the condition is true then the control flow will start to execute a set of statements which are present inside the inner fall Loop and once after the statements are executed it will enter into the increment or decrement statements once after the increment or decrement is done the control flow will again enter into the condition statement and checks if the condition is true or not if the condition is true the same Loop will execute again and if the condition is is false then it will exit the condition statement and it will enter into the increment or decrement variable of the outer fall Loop once after increment or decrement of the out of for Loop is done it will again check the condition in the out of for Loop and if it is false then it will exit now let us try to execute a program to understand this in a much better way this particular example is based on nested for loop as you can see I have considered an integer type variable which is array which which is going to be a twood dimensional array and this particular Loop is our outter for Loop and this particular Loop is our inner for Loop once after the outer for Loop is triggered it will start the inner for Loop once after the execution of inner for Loop is finished then the inner follow will trigger the outer follow Loop for increment or decrement once after the increment or decrement is done then the condition is verified and the control flow will enter into the inall loop again once after the inall loop is executed then it will again trigger the aut ofall Loop and the condition is checked if the condition is true the process will continue else the control flow will exit both the fall loops and execute the statements which are present outside the loops now let us try to execute this program and see how does it work as you can see the program has been successfully executed and the data present in the row one and row two have been successfully printed here as you can see this is the first row which is row zero and this is the second row which is Row one and the data in the row zero is 1 2 and the data in the row one is three and four now let us learn about while loop while loop is a control flow statement that executes itself repeatedly until a given Boolean condition is satisfied while look can be considered as a repeating if statement let us see the flowchart of the vile Loop to understand this in a much better way as you can see in this particular example the control flow will begin at a decision if the decision is true then a particular segment of code is executed and again the control flow will enter into the decision box if the condition is true then the loop is repeated else the condition will exit the decision box let us try to execute an example to understand the V Loop this particular example is based on while loop here I’ll be providing an input to the integer type variable which is num and according to the while condition provided here we’ll find out if the input number is a prime number or not a prime number for that we have provided a condition in the while loop which states that if the variable I is less than or equal to the number divided by two then it should enter while loop and inside the while loop we have again a condition which states that if the number modulus I is equals to equals to Z then flag will be set to true and the control flow will be broken here and I will be incremented and outside the V Loop we have an if statement which states if the flag is not true then we should print it is a prime number else we should print it is not a prime number now let us try to execute this program and see how does it work as you can see the program has been successfully executed and it is asking for an input now let us try to input a prime number as you can see the output is 3 is a prime number similarly now let us understand do while loop two while loop is considered to be a conditional statement which is completely similar to the normal while loop the only difference is that the doy Loop has a Boolean or a conditional statement present at the end of the loop this makes the doy Loop execute at least for once to understand this in a better way let us check out a flow diag R in this particular example the control flow will first encounter the statement so this particular statement will be executed at least for once without checking the condition once after the statements are executed the control flow will enter into the conditional statement now the condition is checked if the condition is true then the same statements will be executed once more once after the statements are executed then the condition is checked again if the condition is true then the same Loop will be continued else the control flow will exit the condition now let us try to execute a program to understand this in a much better way this particular example is based on doile Loop so in here I’ve considered an array into which I’ll be entering elements the process of entering the elements will continue until I provide an input zero and finally all the numbers which I have provided into the AR AR will be summed up and the final summation of all the elements present in that particular array will be printed now let us try to execute this program and see how does it work as you can see the program has been successfully executed and it is asking me to enter the numbers let us try to enter a number other than zero my first number will be 9 and after that let me enter another number other than zero which will be 7 followed by that 5 as you can see it is continuing to accept the numbers which are other than zero and now let us try to enter zero and see what happens as you can see the loop is been terminated and the sumission of all the numbers which are provided into the array are summed up and the summation is provided as 25 so with this let us execute the next type of loop which is infinite Loop before we continue into the infinite Loop let me provide you a simple example to understand while loop and do V Loop in a much better way you must be familiar with the Road Runner Cartoons as you can see the Road Runner here is running on V Loop and the coyote which always tries to hunt the Road Runner is trying to execute itself using a do while loop so here the condition was checked first and the Road Runner is safe and in the case of coyote it was using a dowi loop and executed itself without checking the condition and it is outside the CLI so this is the basic difference between the V Loop and the two vile Loop now with this let us enter into the infinite Loop the infinite Loop is not actually a practically designed Loop instead it is a situation where a condition of the loop fails and the execution process until you stop it manually let us try to execute a program to understand infinite Loop in a much better way so this particular example is based on infinite Loop where I have provided a v Loop so here the condition of the V Loop is always true and the control flow will enter into the V Loop and will print the message edura let us try to execute this program and see how does it work as you can see the program has been successfully executed and it is continuing to print the Eda message continuously now I have to stop this manually and exit the infinite loop as you can see the infinite Loop has been successfully terminated now objectoriented programming so guys this is one of the software design methodologies that how we going to write a software solution in the industry and it’s followed widely so what is this objectoriented programming it’s a methodology or a paradigm using which we can design our software Solutions now there are two major Words which you need to focus on the first one is object and the second one is class now why object comes first in class later because of the term itself object oriented not class oriented so we’ll discuss on these objects and classes so guys object is a real world entity when I say a real world entity what does it mean it means anything which you can see touch feel is an object for example la laptop mobile phone chair table fan anything even you and me are the objects so every object will have some State and behavior what’s a class class is a blueprint or I can say it’s a drawing of an object so how an object will look like how object is going to be represented that we can do by having this guy called class so let’s say there is a class called Dog which is a represent ation how a dog will look like so we will have a representation in two of the ways the first one is properties and the second one is Behavior now properties are also referred to as attributes for example what is the weight what is the age what is the size color breed so these are the properties I can even say that they are the attributes which are linked to your object Behavior goes like eat sleep run back Etc and Etc so let’s say a nose over here is used for having a process called breathing or respiration respiration is a behavior so we have object with the properties and behavior so object will have properties object will have behavior and these properties and behavior will be written in the class to describe the object so having object oriented programming approach we can have different type of objects so this properties will remain same but the value for their properties will change now the size age color and breed for all the different dog objects it’s going to change guys right so even when I talk about something like employer to a company let’s say plumber electrician Carpenter let’s say HR let’s say software engineer now the different employees they have the same details that’s like what is their employee ID what is their name what is their age what is their fold but the data for these properties will be different now same way the sleep pattern would be different for different people right so this is what we are going to understand that different objects they will have the properties same properties but with the different values right so I can say an object is a container which is containing properties and behavior both now how we are different from procedural approach the way we used to write programs in C so how is it different right let’s have some comparisons coming in here so object oriented programming is a bottom to up approach what does this mean this means you think of an object first and then you start coding you think of data first top down approach is like where you just start writing the program we modularize our program into objects whereas in procedural approach we need to write functions for security we have access modifiers we got default private public protected but there we have no excess modifiers objects can move and communicate with each other through member functions but whereas in functions we don’t have objects so data is just moving freely so having access modifiers are a software solution can be designed with much more security right as compared to procedural approach and lastly we have have features like overloading overriding inheritance and many other features which objectoriented programming will give us so that we can very easily design our softwares which procedur programming will not do that now there are four major fundamentals when it comes to object oriented programming structure guys we got encapsulation abstraction polymorphism and inheritance so these are the four major building blocks of any object oriented programming language right so we even call them the pillars for the oops so we’ll discuss them one by one to begin with what is inheritance so guys inheritance is where the property of an object will be acquired by the other object we have a relationship called is a relationship so it’s a parent child relationship so having this relationship let’s say animal is the parent mammals reptiles amphibians and birds they are the children so this is is a relationship bird reptile mammal is an animal right that is how we are relating them we also call this concept as generalization because here we are generalizing so many different types as one single type right so we call animal as super or the parent class whereas mammals reptiles amphibians Birds they are known as sub or the child classes so guys let us have one example on inheritance and therea let’s try to code it so consider that there is an object structure called Product so product is going to have a product ID product will have a name product will have price so these are few of the attributes associated with the product right now I’m taking this use case let’s say we are to develop an e-commerce solution for an e-commerce solution now there will be a product which can be an LED TV so LED TV will extend the product right so is a benefit of extending LED TV from product so you’ll get all these attributes in the LED TV as well right so we just need to write additional parameters so we will come here and say what is the BR and what can be the technology for LED TV and any other attributes if you want to have we can have a mobile which can extend the product so we can have Ram what is the OS what is the SD card size and many more attributes so extension is what is called inheritance so if we don’t have extension so how the things will work let’s see that with no extension we need to rewrite a similar code snippet again and again so you see p name price brand technology is the data associated with LED TV same is with the mobile so P name price they are the common attributes so when we know that we have some common attributes or common properties which will be Reus again and again this is like repeating the code again and again whereas when we are coming up with this structure here so we are reusing the similar code again and again you have product as one guy and you now keep on reusing it again and again so let’s try to come up and write one small program here and understand this example so I’m going to say a new Java project so we are using Eclipse as an ID so you can use intell J developer so whatever you want to use you can use that let’s say a new Java project I’m going to say oops so in this objectoriented programming structure on the SRC I’m going to do a right click and say a new class now this new class over here let us name it inheritance app with the main method so I’m going to write a package let’s say cod. edura so this package name cod. Eda contains inheritance app with the main method right so we know what is main main is executed by jvm right when my program will run now let’s come here and write this class as product and I’m going to write one Constructor here here with says ceso product object constructed and thereafter let’s have some attributes we got product ID what is the name and let’s say what is the price so we can even have more attributes but I got these many details so I’m going to write methods now so this is Constructor the default one so the methods I’ll say void let’s say set product details where I will say let’s take three inputs P ID name and price so I’m going to say this. p ID is p ID this dot name is name and this dot price is price so we call this guy as a method which is setting the details into the the product object I can even say to write data in product object we have this method we also call the methods as behavior and attributes are also referred to as state same way I’ll have show product details where I will come and say cisu let’s see plus product just give me a moment all right so I’m going to say product ID this and thereafter I’ll just have this coming in now I will say ciso name back SLT plus the name the next way we have price back SLT and the price so this is the method which will read the data right so to read data from product object so we call this structure this class product is textual representation how an object will look like in the memory right you need to understand that this P name price they do not belong to the class they belong to object so whatever we write in class is in actual property of object as we are describing the object right so using class you are textually describing the object so P name price they do not belong to class Constructor the methods they belong to the object so if you want something to be property of class if you want anything which should belong to class make it static right so this is what you need to do now coming here guys let us create the product object so create an object what object I want product object let’s say product is a new product so remember this statement is an object construction statement but product is not an object it’s a reference variable which holds the hash code of the object in hexa decimal notation so what does this mean this means that if I will say product is plus product so when you run this code here as Java application you will get to have a product object constructed and this guy reference variable is giving you this 7852 e922 so we get 7852 e922 as a hash code now this might vary from system to system right so we say product is a reference variable right so product is a reference variable not an object it is pointing to the object which is created in the memory in the heat so next is writing data in object so I will say product dot set the product details let’s say product ID is 101 let’s say name is iPhone x let’s say the price is 70,000 so this is the data within the object which we have wrote and now let’s say reading data from object you will say product dot show the product details when you run this code here let me comment out this structure here and here after writing the data I’m just going to put up this C statement data written in product object so just to show this so we got product object constructed and then data written in product object and this is data with respect to your product object so this is how we get to see data within the object write and read operations very basic structure of an object now we can even write the data directly coming here let’s write the data directly so I can say product dot P ID let me create another object so I’m going to say a product this time let’s say this as product one is a new product or let’s say this is a product two this guy is product one and here I I’ll say Product 2 do p is 2011 Product 2 dot name is Nike shoes Product 2 dot price is let’s say 5,000 so this is writing the data directly sorry my bad so this is integer so you’ll say Product 2 dot show the product details so just going to do an empty print line here for the correct output so what you see is product object constructed we are not writing the data using any method we are writing the data directly and you see the data read operation happening again so if you don’t want the data to be written directly you can make the attributes go as private so having your attributes as private so you are limiting the user not to write the data directly you see you are now getting an error here so I’m not going to make everything private let’s say the product ID is private so when you have any attribute marked as private you will not be able to access it so this is an error now since attribute marked as private cannot be accessed you cannot access an attribute which is marked as private so what we will do now so we can have an indirect way to access P ID we can create a method which says set the P ID you take integer as input and you say this dot p is p ID so guys when I’m using this so This Means reference to the current object so this means reference to current object so the left hand side P belongs to object right hand side P belongs to the method set P ID okay so LHS belongs to the object and rhs belongs to Method so we can similarly say in get P which returns back the PID So when you say set p and get P ID what does it mean so these are the special methods we call them Setters and getters seter and getter is required when you have your attribute marked as private so you have some indirect way of capturing these details in your object so now I can come here and say Product 2 do set the P ID as 2011 now this is going to work for us so I think the basic product object structure is clear to everyone now moving ahead into our use case where we are going to extend the product right so let us take one example of mobile and extend the product now I’m going to say a class called mobile with it extends product so this is known as a relation where we say mobile is a product and here mobile is child and product is parent so what I’ll do is I’ll create a mobile Constructor and say a ciso mobile object constructed right so this is how we going to deal with the object now let us comment out this code snippet in the main so instead of having the direct product object I’m going to write a mobile object now so I’ll say a mobile is a new mobile now whenever I am requesting for the mobile object right so we are requesting to get mobile object constructed so this is what we are doing here now when you write this instruction what you see is before your mobile object is constructed project product object is getting constructed so it’s like parent object is constructed before the object of child right so what is the behavior here so product object gets constructed before the mobile object so as a rule of inheritance it is like firstly you get the parent object constructed and then the mobile object constructed so guys I hope this is clear right so what is happening here we have parent object constructed before the mobile object as this becomes the rule to inheritance and we say this is object to object now you will be glad to see that everything whatever product had will be acquired in Mobile right so we can come here and we can say mobile do set the product details mention the P ID let’s say 301 mention the name let’s say iPhone x mention the price let’s say 70,000 and then you say mobile dot show the product details when you run this code you get to see that a product object constructed mobile object constructed data written in the product object and you see the details flowing for you so guys I hope this is clear right so whatever you had in the parent you got in the child right so we have the things coming up for the child and we can very easily access those things now this product over here we can have something like let’s say string what is the OS int what is the RAM and int what is the size of SD card right so let’s say SD card size now these are additional attributes additional attributes of mobile other than the product so these are the additional attributes now what I’m going to do is I’m going to have this guy over here called set product details let’s do a copy here and let’s try to do a paste here now I’m going to say string OS int RAM and int SD card size so here I’ll say this dot OS is OS this dot Ram is RAM and lastly this dot SD card size is SD card size you see p is not accessible we getting an error here it says it’s not visible because it’s marked as private so private is not inherited and visible into the child all right I’m going to make this p as default so we talk about the excess modifiers later

    but we are focused on understanding the oops here now we actually have this same method name set product details right so we have redefined the same method from the parent into the child with different inputs so we got two methods in the child so we have now two methods in the child one from parent and one of child right so both are different as in based on inputs right even though name is same even though name is same they are different based on the inputs so whatsoever belongs to the parent that is inherited into the child and now in the a child we have the same method coming up again why we did this because we wanted to set the data for the additional attributes so this is known as method overloading same method name with different inputs so what I can do now is why to access the parents method here I can have my own method mobile do set the product detail with the p ID let’s say 301 name let’s say iPhone X price let’s say 70,000 OS let’s say iOS Ram let’s say 4 SD card size let’s say 128 and thereafter I’m going to say mobile. show the product details now when you run this code guys what we see is it says data written in product object so what I can do is I can just manipulate this and I can say data written in Mobile object when you run this code you see data written in the mobile object but whatever you are reading is the one which was inherited from the parent so this read method show product details is inherited from the parent and that is being used here so hence we cannot see more than three details I’ll redefine this method as well so let’s redefine show product details as well but here we have same inputs two methods one from parent one in child and we have same signatures when I say same signatures it means they have same input details so what I’ll do is I’ll extend the data here so we’ll have OS we’ll have RAM and we’ll have SD card so we’ll have this OS RAM and SD card science now what you will observe is that when the show product details will be executed so we got two show product details method one in the parent one in the child so child method will be executed and not the parent method so this fundamental over here is referred to as overriding very very beautiful concept guys so overriding versus overloading method overloading whereas this is Method overriding so same method name with same inputs in parent child relationship so only in a parent child relationship now when you run this code here what you see is the other details also coming in now we know the reason that why we need to overload a method why we need to override a method we need to overload a method so that we can write the exact data which we want so we are customizing this method in the child we are overwriting the methods so that we can display more data so we are customizing the methods in the child right so overloading and overriding is what where we are having customizations to predefined methods we don’t want these predefined method we want the way we want to present the data and we have it in front of us so this is a very quick introduction to objectoriented programming structure guys so now let us come here and understand the next part so inheritance is where one object will acquire the properties of other object it’s is relationship the parent child relationship so synthetically you need to come up and say extends so which is extension right what are the advantages code reusability so we are reusing the code having an extensibility we are using overriding we are even having the features to hide the data if you privatize any attribute you won’t be able to inherit it so we got different types of inheritance so you got single level multi-level and hierarchical where single level is one parent one child multi- level is parent to child to grandchild and hierarchy is having one parent with more than one children multiple inheritance that’s opposite of hierarchy is not supported in Java so there is no virtual keyword there is no pointer technique in Java by which we can solve the problems like dreaded Diamond here so in single level inheritance we got one parent and we got one child so arrow is upwards because B is an a right so it’s extension relationship then we have multi level parent to child child to grandchild and thereafter guys we got hierarchy where one parent with the multiple children so remember we don’t have support for multiple inheritance in Java that’s like the reverse of this hierarchy multiple parents having the same object next is polymorphism so guys it is having the same name with the different different definitions so you can say mothers they are the best example of polymorphism they handle kids they handle office they handle home more than one form right so here polymorphism can happen in two different ways compile time and runtime so what is compile time versus runtime so compile time means overloading we call it static polymorphism so compiler will ensure which method will be executed for which function call so there are some rules to overload the method name should be same and the argument list or the inputs to the method that should be different and unique so the other form is runtime polymorphism that’s like Dynamic polymorphism where we got Method overriding All right so overriding we got some rules coming in here so the rules to override is where the method name should be same input should be same return type is something which must be same or the subtype of the overden method and excess level it must be same or more restrictive now what is abstraction guys so abstraction is achieved using abstract classes and interfaces so this is where we achieve a runtime polymorphism in a different approach right so here we have an abstract class so an abstract class is created using an abstract keyword so here we will have the methods with abstract keyword we even have non-abstract methods this is a class for which you cannot create objects you can have Constructors you can have static methods but we cannot create the object right so you can even have the final methods substract class X as a template for the various methods and definitions to be executed so moving ahead so the better version of abstract class is an interface so interface is a blueprint for a class which will contain some constants and Abstract methods so it will enable a multiple inheritance and helps in achieving the loose coupling so a class can extend a Class A Class implements an interface now this is one of the major differences between classes and interfaces so we got interface to interface inheritance as well so guys abstract class and interfaces so as in practically we’ll see it in our other sessions so lastly what is encapsulation where we are going to privatize the data so we can have an attribute we can mark it as private and when the attribute is marked as private it cannot be accessed so we need Setters and Getters so as to access this private data so so encapsulation leads to data hiding so it is focusing on security what are abstract classes in Java abstract class in Java act as a boundary between the implementation method and its functionality it is used to exchange the functionality between the concrete class members and the abstract class abstract classes are considered as those classes that hide the method implementation details from the user and show only the method functionality they declare using the keyword abstract and these methods can include abstract as well as non-abstract methods in them with this let us continue with the next topic which is why do we need an abstract class in Java we need abstract classes in Java for the following reasons firstly default functionality abstract classes are designed to provide a default functionality of the defined method for all the sub classes next template abstract classes provide a template for future specific classes next code reusability abstract classes allow code reusability followed by that we have separate method definition abstract classes separate the method definition from the inherited sub classes next we have loose coupling abstract classes help the users to achieve loose coupling between the class members and class methods last but not the least which is dynamic method resolution abstract classes support Dynamic method resolution in runtime with this let us jump into our next topic which is rules for using abstract classes in Java to use the abstract classes in Java we are supposed to follow the rules defined as below firstly in any project or a program always remember that the abstract class cannot be instantiated the next one is an abstract class can also accommodate final methods next an abstract class must always be declared using the abstract keyword followed by that an abstract class can have both abstract as well as non-abstract methods finally it can have Constructors as well as static methods so these are the rules required to use abstract classes in Java with this let us now understand the ways to achieve abstraction in Java abstraction is one of the objectoriented programming practices to achieve abstraction in Java we have two methods first using an abstract class and the next method using an interface now let us understand the Syntax for using abstract classes in Java for defining abstract classes and Abstract methods in Java we have the following syntax firstly let us understand the syntax to declare an abstract class in Java for example here I’m declaring a class by the name edureka and I’m using abstract keyword here here now similarly let us understand how to declare a method using the syntax the Syntax for declaring a method is almost similar to the syntax of declaring a class the only change is that the use of parenthesis and a semicolon with this let us try to execute some practical examples of abstract classes in Java to understand the terminology in a much better way the first example would be student information after this we shall execute two more examples the examples will be same but implementation will be different first we’ll use an interface to execute the same program followed by that we’ll execute the same program using an abstract class this is done to understand the difference between an abstract class and an interface now let us execute our first example as you can see this particular example is based on abstract classes you can see that I have used the abstract keyword to declare this particular class which is person this person class includes private data members which are name and gender similarly I have also included another method which is an abstract method and I have declare that method using the abstract keyword and inside the abstract method I have to written some data related to the person class now let us move on to the next class which is the student class this particular student class is a normal class and this student class is extending the abstract class which is person inside the student class we have some information related to the student which are student name student gender and student ID here we will be extending the abstract class which is person into the student class and from there we’ll be extending the details of name and gender now let us try to execute this program to understand this in a much better way as you can see the program has been successfully executed and the data is also been displayed here according to the output the names of the students are Priya Karan Kumari and John and their respective genders are also been displayed here now let us try to execute an example based on interface the program that we decided to execute based on both interface as well as abstract class is to find out the area of two shapes which are rectangle and circle now let us try to execute this program and see how does it work firstly we shall Implement interface as you can see in this particular example I’m using interface and inside the interface I have described two methods which I draw and area here we have provided input to both the methods which I draw and area for both the shapes which is circle and rectangle now let us try to execute this program and see the output as you can see according to the data provided to both Circle and rectangle here are the outputs of their area now let us execute the same program using an abstract class as you can see this particular class is the abstract class which is shape and inside the shape we have two methods which are the area of the shape and draw function followed by that we have the class rectangle which extends the abstract class which is shape and inside the rectangle class we are implementing draw method as well as area method similarly followed by the rectangle class we have Circle class which extends shape abstract class and inside the circle class we also have draw method and area method finally we have the class edura where we’ll be providing the data for rectangle class as well as Circle class now let us try to execute this program and see how does it work as you can see the program is successfully executed and the area of rectangle and circle are generated you can see that the area of rectangle is 600 followed by that the area of circle is 628 with this let us move on to our next topic which is the difference between an abstract class and interface the first difference between abstract class and interface is abstract class can include abstract as well as non-abstract methods while interface can have only abstract methods the next difference is abstract class includes non-final variables on the other hand interface can include only final variables followed by that abstract class can include static non-static final and non-final variables compared to abstract classes interfaces can include only static and final variables the next difference is abstract class can Implement an interface while interface cannot Implement an abstract class now we shall discuss how to implement abstract classes as well as interface to implement an abstract class we use the keyword extents and to implement an interface we use the keyword implements the next difference is abstract classes can extend Java classes and interfaces while interface can extend only an interface the last difference is that members can be private as well as protected in an abstract class while in an interface members are declared as public by default why do we need inheritance to understand this let us consider a simple example of two different watches first one is a classic dial watch and the next one is a modern digital watch the functionalities defined for a dial watch are display date display day and display time similarly let us get into the advanced version of the watch which would be our digital watch the function alties required for the digital watch are as follows display day display date display time light set alarm and set timer as you can see three functions from the dial watch are repeating here in real time this would be considered as code redundancy you might avoid by removing the extra code from the digital watch but it results the digital watch will be missing the three functionalities which are display time display date and display dat you might try to keep them in the digital watch and try to remove those from the dial watch but again in the real time scenario you will lose the existence of dial watch the only solution for this problem is by applying inheritance to both the classes where the dial watch will act as a parent class and digital watch will act as a child class the child class will inherit all the methods and properties of the parent class and successfully reduces the code redundancy improves the readability and the functionality of the code to an exponential level now that you have theoretically understood what the term inheritance means let us now get into Java inheritance and understand it through an example like any other programming languages Java inheritance is also known as a procedure where the child class inherits all the methods and properties of the parent class as you can see the tablet here is inheriting the properties both from laptop and a mobile phone this was a pictorial example let us see a practical example through a code in this particular example we have two classes the first one is teacher which acts as a parent class inside the teacher class we have two strings teacher and edura along with that we also have a print statement which has teaching message inside it now let us get into our child class Hadoop teacher happens to be our child class and in our child class we have a string called as spark now we will be performing a print operation with which has to access the college name designation and the main subject as you can see we have the main subject inside our child class and college name and designation of the lecturer in our parent class now we’ll try to inherit the parent class through the keyword extents and this is the name of our parent class which is teacher now let us try to run this program and see the output as you can see we have successful inherited both the messages from the parent class which is Eda which happens to be the college name and the designation which happens to be the teacher and the main subject which is spk this is been displayed from the child class and the message from the parent class which is teaching now that you have understood Java inheritance in a practical way let us now get into the types of inheritances supported by Java Java basically supports four types of inheritance namely single inheritance multi-level inheritance hierarchial inheritance and Hybrid inheritance let us discuss each one of them in detail firstly single inheritance single inheritance is a procedure where one child class inherits the methods and properties of one parent class in simpler words the whole system consists of only two classes one parent and one child let us understand this through an example here we shall consider two classes one class will be person and the other class will be employee where the person class acts as a parent class and employe class acts as a child class let us execute this program practically you can see here that this happens to be a parent class which is person which has two different functions the first function is set age and the second function is set name now let us move on to our child class inside our child class we have one method which happens to be set employe ID the methods set name and set age which are in the parent class are required in the child class as well so let us try to inherit those into this child class so this is the code for inheriting the properties of the parent class into the child class where I’ll be inheriting the properties of get name and get H into my child class to display the data of a particular employee in an organization now let us try to execute this program and see how does it work as you can see the properties of get name are in inited and I have successfully named my employee as ragir and I have set the age of ragir as 23 and accordingly his employee ID is EMP 11101 so this was single inheritance now let us move into the second one which happens to be the multi-level inheritance multi-level inheritance is a process where multiple child classes inherit the properties from their preceding parent classes to understand this in a better way let us consider a simple example as you can see in the picture Class A is the parent class and Class B and Class C happens to be the child class here child Class C is inheriting the properties from its preceding parent which happens to be Class B and Class B is inheriting the properties and methods from the superior class which happens to be Class A this was a pictorial representation now let us see a practical example through a code as you can see this is our program and calculator is a parent class similar to class A in a picture which performs basic mathematical operations such as multiplication subtraction addition and division now let us move into our class B which would be the class advanced advanced class can perform a little Advanced operations such as modulus of a number square root of a number and square of a given number and now let us move on to our child Class C which happens to be the area so this class can perform a little Advanced calculation such as finding an area of a geometric figure such as Square rectangle and circle now we need a calculator which could perform all these operations in one single class for this the only solution would be multi-level inheritance where we will be inheriting all the methods and properties of superior parent class into the succeeding child classes now we have tried to inherit all the properties and methods of the preceding parent classes into the last child class let us try to execute this program and see the output as you can see the values are already passed to all the functions now their respective outputs have been successfully displayed so this was multi-level inheritance now let us move on to the next one which happens to be the hierarchial inheritance hierarchial inheritance is a procedure where we’ll be having multiple child classes and all the child classes will be inheriting the properties from the major parent class here let us assume an example of a restaurant we shall have four different restaurants here the first one would be a parent restaurant and the other three will be Chinese restaurant Italian restaurant and Mexican restaurant the parent restaurant will be having various types of ingredients which the child classes might need in their dishes as well let us see this practically to understand this in a better way so this would be our parent restaurant which will be having the ingredients like bread vegetable stew and cheese now let us get into the first child class which happens to be the Chinese restaurant the Chinese restaurant already has noodles and Momos to cook their special dishes they might need vegetables too and cheese similarly let us get into Mexican inside Mexican they already have nachos and sweet potato for their special dish they might need cheese and vegetables toew or even bread for making some better dishes similarly let’s get into Italian which have pasta and sausage available so to prepare their special dishes related to sausage they might require bread and to prepare their special dishes related to pasta they might require cheese and vegetables too so how does all these three restaurants get their ingredients from simple they apply hierarchial inheritance and inherit all the properties from the parent class and cook their special dishes now let us run this program and see how does it work as you can see all the child classes have successfully inherited their parent and the data is also been displayed the first one is the Italian restaurant so they have requested for bread vegetable stew and cheese from the parent class and they say that they already have pasta and sausage available with them now the second one happens to be the Chinese restaurant and they say that they have requested for bread and vegetable stew from the parent class along with cheese and they have noodles and Momos already available with them similarly the final child class happens to be the Mexican restaurant and they see that they have also requested for bread vegetable stew and cheese from the barent restaurant and they already have nachos and sweet potato available with them so this was an example for hierarchal inheritance now let us move on to the next one which happens to be the Hybrid inheritance as simple as the name suggests Hybrid inheritance can be a combination of any other inheritances as you can see in the picture displayed here you can see multi-level inheritance here and hierarchial inheritance so these are the two combinations of two inheritances possible in Java The overal Inheritance pattern can be called as a Hybrid inheritance now you might be wondering about another possibility in inheritance which might be obviously the multiple inheritance here one single child class can inherit all the methods and properties from two or more different parent classes but sadly in Java this results in a diamond problem and could not support multiple inheritance it is possible to achieve this Behavior through Java interface with this we shall move to our next topic which is EA and has a relation is a relation basically deals with inheritance and interface any child class which inherits or implements a parent class is said to be in a easa relation coming into ha a relation it uses instance variables to reference the objects of the parent class this might be a little confusing let us understand it practically as you can see the BMW car is a vehicle which is inheriting the properties of a vehicle so it happens to be in a East a relationship with vehicle and coming into has a relation it has an engine so the BMW car is referencing to an object of engine class and said to be having an has a relationship with engine class let us execute a program and see this practically as you can see my child class is BMW and it is extending to the parent class which is car and also extending to another parent class which is Java so PMW class is in an EA relationship with car and in an has a relationship with engine class now let us execute this program and see how does it work as you can see the class BMW has successfully inherited both the classes which are car and engine and the properties which it inherited from car class is the color which is blue and the speed from the engine which is 256 with this let us get into our last topic which is Method overloading and Method overriding method overloading is defined as a procedure of having two or more methods with the same name within a single class provided the argument list must different method overloading is divided into three types the first type would be having different number of parameters and the second one will be having different types of data type and the third one will be the variation in the sequence of the parameters with different data types let us see each one of them practically this particular example is the first type of method overloading here in our parent class you can see we have two functions on the name of display so the first display method has one parameter which is a character type and in the second display method we have two parameters one is of a character type and the other one of an integer type so from the child class I’m inheriting these both methods and one of the object has one single parameter which happens to be the character type and the second object has two different parameters one of it is a character type and the other one is an integer type let us execute this program and see how does it work here you can see the output the first one is calling the first display method with one single parameter and the second one is calling the second display method which has two parameters now let us see the second type of O loading in here we have two display methods in a parent class one of the method has character type of data type and the other one is having integer type of data type in a child class I’m passing character type of data to the first display method and integer type of data to the second display method now let us try to execute this program and see how does it work as you can see the data has been successfully displayed the first one is calling the method display with character type and the second one is calling the method with integer data type now let us see the third type of method overloading in here we having the same two display methods in the parent class one of them is having the character data type in the first position and integer data type in the second position and vice versa in the second display method now similarly through my child class I’m passing two different parameters the first object will be passing character data type in the first position and integer in the second one and the second object in the vice versa now let us execute this program and see how does it work as you can see the message from the first display method is been executed here which shows that the first object is referring to the first display method and the second object to the second display method now let us take a step further and understand type promotion as well in one of my display methods I have provided character and double attributes whereas float and character attributes in the object The Interpreter will implicitly promote the data type of the object from float to double this type of promotion is valid since there is no other display function with matching attributes now let us try to execute this program as you can see the object has selected the first display method and upgraded the float to double the message from the first display method has been displayed here which happens to be function one now let us try an example where we should have a display function with matching attributes and verify if the promotion is accepted or not as you can see the object display is passing two data types which is an integer one and Float one and here we have the first display function with float and integer data types let us try to execute this program as you can see we have the output now in this scenario there is no type promotion since there is already the data type which is available and the parameters are matching with this we shall get into method overriding method overriding is a process where both the child and parent classes have the same methods there are also some rules for method overriding which say the argument list of the child class should match the parent class the second one is access modifier of the class should be less restrictive than the parent class and the third one is local parameters cannot be overridden local parameters in the sense the parameters with access modifiers as private static and similar ones let us see each one of these rules practically so let us execute our first example here we have defined two objects which are pointing to the display methods the first object implements the display method from the parent class whereas the second object implements the display method from the child class this happens in the runtime hence this process is called as runtime polymorphism let us execute this program and see how does it work as you can see the display methods are been implemented and the data present in the methods are also displayed now let us discuss about some key points of method overwriting first one the argument list of the child class should always match the argument list of the parent class second one the access modifiers of the child class should be less restrictive when compared to the parent class let us see this practically as you can see in my example the child class has an access modifier as public and the bearing class is having an access modifier as protect Ed this program will be executed without any errors let us try to execute this as you can see the data has been also displayed which says the child class method has been executed now let us try to change the access modifiers now the only change what I have done is I have changed the access modifier of the parent class to public and the access modifier of the child class to predict it as you can see the eclipse editor is throwing an error which says that the child class cannot have an access modifier which is highly restricted than the parent class now let us discuss our last topic which happens to be about the super keyword in method overriding the keyword super can be used in the child class to call the method defined in the parent class with its name the super method is used to invoke the Constructor defined in the parent class let us see this practically using super keyword I’m calling a method by name My Method from the parent class now let us try to execute this program and see if it can successfully call the method or not as you can see it has successfully called the method from the parent class and the data is also been displayed what is polymorphism to understand understand this phenomena let’s take an example of a chameleon I hope you all know what exactly is a chameleon in the real world you might have seen this creature changing its color based on its requirement to hide itself from the Predators if someone inquires you how does it do that you can simply say because of its polymorphic nature similarly in the programming World Java objects possess the same functionality where each object can take multiple forms this property is known as polymorphism in Java where poly means many and morph means one or more forms in this session for today we shall discuss one of the key concepts of object-oriented programming which is none other than polymorphism now that we have understood what exactly is polymorphism let us go through some examples here you can see the image the person in the middle can act in multiple forms firstly you can see the same person being a student followed by that he will become an employee of a company and also he would like to play some sports followed by that the same person is acting as an interviewer for a fresher then the same person is acting as a normal human being who is purchasing groceries and followed by that the last example of the same person being a family man you can see the same person is playing different roles at different situations this is called as a polymorphism of a human being now that we have finished the first example let us go through the second example of polymorphism here suppose you have to save contact numbers of different persons now it’s not possible that every single person in your contact list have two numbers but few of them may have so in this situation let us assume that you have a friend by name Jack and Jack has two numbers you have saved the first number and in case if you want to save the second number you don’t have to create the new method called create contact and save the second identity number you can just call the same create method what you have created for the first one and save the second number with the same name here you have saved Jack contact ID with the same name but you have two different numbers so this example is based on polymorphism now that we have discussed two examples of polymorphism let us move ahead to the next topic where we will discuss about the types of polymorphism available in Java so there are basically two types of polymorphism available in Java they are static polymorphism and dynamic polymorphism let us understand each of these in a bit detail firstly the static polymorphism a polymorphism that is resolved during compile time is known as static polymorphism method overloading is an example of compile time polymorphism so what exactly is Method overloading method overloading is a feature that allows a class to include two or more methods to have the same name but the different parameter list to understand this in a bit more detail let us go through a sample program so you can see this particular example is based on polymorphism or method overloading so in the class called my class we have created two methods the first method is my class which has the statement to print the message bricks followed by that in the same class we we have another method called my class which has the same name but inside this method we have a variable I of integer data type and inside the second my class method we have a message which says building new house that is plus I plus feet tall we are giving the height which is I so this height will be replaced here and the message will be printed so followed by this we have the void in this void method which is the info we have a message again which says houses height feet tall so this height will be replaced by the height we provide in the second my class method and followed by that we have another void info which prints the message saying S Plus houses height feet tall so you can see we have two different methods with the same name that is my class and followed by that the second my class and followed by that we have the same info or the same info method with different parameters now this is our main class which will access these two methods and print the data which we require now that we have gone through the program let’s execute this and see the output as you can see the program has been successfully executed and the output has been printed here you can see that the provided height is zero so the building is been provided as 0 ft tall if we replace the height with another number like say 100 then the program will be executed again and the updated data will be printed here so that with static polymorphism and Method overloading followed by Static polymorphism and Method overloading we shall Advance into the second type of polymorphism which is none other than the dynamic polymorphism so Dynamic polymorphism is a process in which a call to an overridden method is resoled at runtime that’s why it is called runtime polymorphism or dynamic polymorphism method overriding is one of the ways to achieve dynamic polymorphism in any object-oriented programming language overriding is a feature that allows a subass or a child class to provide specific implementation of a method that is already provided by one of its super classes or parent classes now let us execute a sample program to understand Dynamic polymorphism and function overriding as you can see this particular example is based on method overriding or dynamic poly morphism here we have a parent class and a child class the parent class is the animal and the child class is the dog so inside the parent class we have a method called move and similarly with the same name the same method is also included in the child class dog so what exactly we doing in the main program is we’re trying to call the parent class method move as well as the child class method move in our main program so let’s see and execute the program and generate the output you can see the program has been successfully executed and both the methods are being called so inside the parent class animal the method move is been executed and animal scan move message is been printed successfully followed by that in the child class dog the move method is been called and the message dogs can walk and run message is been printed successfully so with this let’s move ahead and understand the next Topic in our discussion that is the advantages of dynamic polymorphism so the first advantage of dynamic polymorphism is support for method overriding Dynamic polymorphism allows Java to support overriding of methods which is central for runtime polymorphism followed by that the second advantages it allows subclasses to add it specific methods subclasses to define the specific implementation for the same so these are the few advantages of dynamic polymorphism let us move ahead and understand the different characteristics of polymorphism in Java in addition to these two main types of polymorphism in Java there are other characteristics in Java programming language that exhibit polymorphism like coercion polymorphic coercion deals with implicit type conversion done by the compiler to prevent type errors a typical example is seen as an integer and string concatenation as shown in the following example you can see string s strr is equals to string is equal to 2 so this example is based on coercion which will be an implicit type conversion done by the compiler followed by cotion we have operator overloading an operator or method overloading refers to a polymorphic characteristic of same symbol or operator having different meanings or different forms depending on the context for example the plus symbol is used for mathematical addition as well as string concatenation in either case only text that is the argument types determines the interpretation of the symbol the first plus symbol is used in string data type so the plus will be considered as a concatenated operator and followed by that the next place where the plus operator is used is in the integer data type so here the summation of both the numbers will be performed and the output will be as this so the first one is 22 and the second one is f followed by operator overloading we have polymorphic parameters polymorphic parameters allows the name of a parameter or method in a class to be associated with different types in the below example I have defined content as a string and later as an integer the Declaration of polymorphic parameters can lead to a problem known as variable hiding here the local Declaration of parameter always overrides the global Declaration of another parameter with the same name to solve this problem it is often advisable to use Global references such as this keyword to point to the global variables within the local context now with this let us move ahead into the next topic that is the super keyword super is a keyword it is used inside the subass method definition to call a method defined in the super class let us execute a sample program to understand the functionality of super keyword as you can see this particular example is based on super keyword so here you can see we are trying to call a method from the parent class or super class using the Super Key word now let’s try to execute this program and see the output you can see that the program has been successfully executed and the method from the super class has been extended successfully into the child class using super keyword now with this we shall move ahead and understand the basic difference between the static polymorphism and dynamic polymorphism the first difference is static polymorphism relates to method overloading whereas the dynamic polymorphism relates to Method overriding the second difference is in the static polymorphism errors are resolved at compile time whereas in Dynamic polymorphism errors can only be determined at run time let us go through a code segment to identify errors in static overriding you can see the first line of code which is void difference between the numbers X and Y followed by that we have another method with the same name where we’ll differentiate the numbers X and Y of float data type and the last int diff A and B so here we identify a compile time error similarly let’s go through a code segment for dynamic polymorphism you can see the college here is the parent class and the object we creating is from the child class so the reference of parent is pointing to the child here that is college obj is equals to new student followed by that the method of child is being called which is obj do exam so this is an example for dynamic polymorphism exception is a problem that arises during the execution of a program it can occur for many different reasons say a user has entered an invalid data or a file that needs to be open cannot be found or you can also say that a network connection that has been lost in the middle of Communications or the jvm has run out of memory many such cases but if we do not handle them it leads to a system failure so handling an exception is very important and that’s where Java introduced exception handling mechanism to handle the runtime errors so that the normal execution flow will not be disrupted for example class not found IO exception SQL exception Etc now let’s move ahead and see the difference between error and exception first errors are impossible to recover but exception can be recovered by handling them next errors are of type unchecked but exceptions can be either checked or unchecked type just wait a little while and you will know what are checked and unchecked type of exceptions and errors are something that happen at runtime but exception can happen either at compile time or runtime exceptions are caused by application itself whereas errors are caused by the environment on which the application is running so these are the key points of difference between errors and exceptions now let’s see what is exception hierarchy all exceptions and errors types are subclasses of class throwable which is a base class of hierarchy here one branch is heeded by exception that is this class is used for exceptional conditions that user program should catch for example say null pointer X exception runtime exception Etc and other Branch error are used by the Java runtime system to indicate the errors that has to do with the runtime environment itself that is JRE for example virtual machine error or stack Overflow error Etc so how Java virtual machine handles exceptions whenever inside a method if an exception has occurred then the method creates an object known as exception object and hands it off to the runtime system system and this exception object contains name and description of the exception and also the current state of the program where exception has occurred and creating the exception object and handling it to the runtime system is called throwing an exception then using try catch finally methods these exceptions can be handled so this is how Java virtual machine handles exceptions internally next let’s see the differences between checked and unchecked exceptions and simp terms exceptions that happen at compiled time are checked exceptions like IO exceptions Etc and runtime exceptions are called unchecked exceptions like divide by zero array out of bound null pointed exception Etc basically unchecked exceptions are built-in exceptions in Java so checked exceptions cannot be simply ignored the programmer should handle these exceptions and runtime exceptions are ignored at the time of compilation now let’s let’s see the basic example of exception so here I have defined the class and inside the main method I have a tri block so in this tribe block the code that we are going to write May raise a exception that is it contains the code that raise exception and then the raised exception will be handled in the catch block so let’s see a small program as how it occurs first I’ll create a new package called exception edura and now I’ll create a new class called sample exception finish so inside the class the first thing that we are going to do is we are going to write the main method so here I’ll will create a string s Str and make it as null so now after this I will try to retrieve the length of the string so when I execute this program it will throw an exception why because the string is null and we are trying to retrieve the length of the string as I said it throws null pointer exception because the string is null it does not contain any values so now let’s use try and catch method to handle this exception so what I’m going to do here in Tri block I’m going to write the code that will raise an exception say I have given a 30 and B a zero now I will try to divide a number by zero like in C is equal to a by B so just tell me what happens here now say if we try to divide a number by zero then it says we cannot divide the number by zero because it raise an arithmetic exception correct so let’s see how that occurs now as it throws an exception here so what I’ll do to maintain the normal flow of execution I will write the cat block to handle the exception that is okay let’s run the program and see the output so as I told the exception has being catched by catch block so here first it will throw the exception and then it goes to the catch block catch block handles the arithmetic exception e so it prints cannot divide a number by zero so this is how exception handling works now let’s see the various types of exceptions so in Java there are two types of exceptions one buil-in exceptions and the other one user defined exceptions first let’s see what is buil-in exceptions these are the exceptions which are available in Java libraries and they are suitable to explain certain error situations like arithmetic exception array index outof bound exception class not found IO exception runtime exception number format Etc so let’s see an example and understand how built-in exception works so this example is one type of exception that is arithmetic exception where we try to divide the number by zero and it results in arithmetic exception and we have catched the method so let’s see one more example of that kind now I’ll use one more Tri block here what I’m going to do is I’m going to declare the integer number and try to pass a string variable so what happens it’s obvious fact that it throws an exception so let’s see how so just tell me one thing I have declared a integer number and trying to pass a string variable so what happens it obviously throws the exception now in order to maintain the normal flow we have to handle this exception so I’ll use a catch block and handle the number format exception so now let’s execute and see first it said cannot divide by zero because we handle arithmetic exception and next we handled number format exception next we will see how array index outof bound exception occurs and how it can be handled so here you can see I have created an array of size five and now I’ll try to access the seventh element in the array so what happens after this it will obviously throw an exception why because the size of the array is five and I’m trying to access the array that is out of bound so what happens when I catch the exception it says array index out of bound exception sorry it is array index out of bounds now again let’s execute as I said again the array index out of bounds exception got handled and it printed the output so this is how built-in exceptions are present in Java libraries so now I will jump into the methods of exceptions because you need to know the throw and throws methods to understand user defined exceptions after I complete the methods of exceptions I will explain you the user defined exceptions so these are the various methods of exceptions that is try catch finally throw and throws let’s see each of them first try try block is used to enclose the code that may throw exception the syntax is as follows as you have already seen it’s very simple we write a code that throws exception and we can handle it using the catch block next Nester try Nester try block is nothing but a try within a tri block for example you can see here I have declared one try and inside that I have created one more try catch and there is one one more try as well so let’s see a small example as how it works so I’ll do one thing here I’ll give a triy block within the tri block and then after catch I will end the statement and after that I will print like system. out. print Ln let’s print some other statement just look at the program first what I did so from here I have modified the program I have given one Tri block and inside one try block I have given one more try and catch block okay and now I have created one more try catch and handled here after that what I’m doing I’m just giving a statement as print other statement after that I’m closing this dry block then I’m again catching the exception and handling that okay so within this one Tri block there are two Tri blocks so that’s how Nest TR can be used so let’s see the output see first it’s saying that cannot divide by zero because it was the first thing that we have done and within the tri block it said number format exception because the first Tri block got executed and next for this one more exception that it WR it said it handled and again it’s printed other statement that’s all because we are not declaring anything in the other Tri block that is the main Tri block so it is not printing that exception if this drive block has thrown any exception again that would have been printed but as there is nothing it’s not printing so this is a usage of Nest a try and how it can be declared and this is how it works now let’s see the usage of catch block as in these previous examples you have already seen how it can be used and there’s also one more thing that is multic catch that is if you have to perform various task at the occurrence of various exceptions then you can use Java multic catch block so here you can see you have one Tri block and you have multiple catch blocks so let’s see how that works I’ll modify this program only for you so here I have one Tri block and I have two different catch blocks let’s execute and see so first it printed number format exception and then it printed other statement why this exception did not get handled because there was no any exception that was being thrown for this okay if there was any exception that was thrown then it would have been handled so this is how you can use multiple catch blocks next we’ll see finally finally is a block that is used to execute important code such as Closing Connection stream Etc no matter whether exception is handled or not finally block will always be executed so in the previous example you saw that after declaring a tri block you must use catch block to maintain the normal flow but on using finally block the catch block is not required let’s see how I’ll do one thing I’ll remove all the catch blocks here so I just have a tri block now I’ll give finally and print the statement okay so now let’s execute this as I said we have not used catch block it throws the exception but even on throwing the exception the flow will not be disrupted there because we have used finally block to execute the code so you can see the finally block is always executed so that’s how it works next let’s see what is throw throw is nothing but a keyword which is used to throw an exception so you can see the syntax here inside a method you are throwing an exception let’s see how it throw was an exception let’s modify this program first I’ll Define the function here so inside the throw block I’m going to throw an arithmetic exception okay now let’s handle the exception using catch block I’ll close this average function and call this function in the main method so first I throw the exception in tribe block and catched it and now I’m calling the entire function in the main method so let’s see what will be the output it’s just telling the exception is being caught correct why because when we call the average function in the main method it goes back to the loop exception will be throw but it is been catched correct so this is how throw is used to throw an exception and it can be handled the cach block simple let’s see what is throws throws is also a keyword which is used to declare the exceptions it does not throw any exception but it specifies that there may occur any exception in the method and it is always used with the method signature let’s see how again I’ll modify this program itself as I have told it is used with method signature I’m going to use the throws keyword along with the method and I’m also using a throw keyword to throw the arithmetic exception now inside the main method I’ll use a tri block so this is a example where in I’m using the throw keywords along with the method signature and inside this I’m throwing a new exception but when I’m calling the method or a function in inside the tri Block in main method it will throw an exception so instead of handling it I’m just printing the finally block so let’s see what happens so you can see here first the inside average function is printed and then it says that there is a exception in the main method that is we are throwing an exception as we are not handling that at the end it’s printing the finally block simple so this is how throws is used next let’s see the difference between throw and throws first throw is explicitly used to throw an exception but throw is used to declare an exception we have already seen how it worked next checked exceptions cannot be propagated using only throw but checked exceptions can be propagated using throws throw is followed by an instance and throws is followed by a class and throw is always used within a method and throws is used with the method signature and throw can throw only one exception and not multiple exceptions and throws can declare multiple exceptions just how we saw how it worked next we’ll see the difference between final finally and finalize so final is a keyword finally is a block as we saw and finalize is a method final is used to apply restrictions on class methods and variables but finally is used to place an important code and finalize is used to perform clean up processing just before the object is garbage collected coming to final the final class cannot be inherited and the final method cannot be overridden and the final variable cannot be changed coming to finally it will be executed whether the exception is handled or not we already saw how it worked now let’s see a user defined exception sometimes the buil-in exceptions in Java are not able to describe a certain situation in such cases a user can also create exceptions and that are called as user defined Exceptions there are two important points first one a user defined exception must extend the exception class the second one the exception is thrown using a throw keyword so let’s see how it works I’ll modify the same program first inside the tri block I’ll throw an exception using throw keyword I will handle the exception using catch block I’ll close the class now I will extend the exception using extends class so let’s par some argument here and let’s try to print the output so let’s par some argument as we have thr a new exception and when I’m extending my exception then what happens let’s C I’ve saved the program and I’m giving the value of a to B okay now let’s see what will be the output as expected it should print the value as five let’s see whether it prints the same prescribed value or not exactly we got the output as desired that is the throw keyword is used to create a new exception and throw it to the catch block and then it got handled and when we and when extending that we will get the same desired output so this is how how you can create a user defined exception now coming to the end of the discussion let’s see what are custom exceptions and how to pass an exception I’ll modify the same program again so in this case if the number that we entered is more than 100 then it should throw an exception else it should print the provided input is valid let’s see how after that I’m reading a number here and then trying to validate the input and tri block if the input is not validated then it will be handled in the catch block again this is a user defined exception so it must extend the exception class so this is how I have created custom exception so let’s run the program and check what will be the output so it’s asking to enter the number that is less than than 100 so I’ll enter 99 says valid input again I’ll run the program now I’ll enter 101 it says input is greater than 100 and it C the exception that is I have mentioned here if the number is greater than 100 then it should throw an exception and that exception is caught in the catch block so this is how custom exception can be used in Java now let’s also see how to pass an exception in this case we are going to pass a simple date format so for that I need a java. simple date format package I’ll import that now I’ll make the class as public and let’s write the code for the simple date format I’m going to create a reference called SDF so I’m going going to pass the input date that we enter so this is very simple I’ll tell you how if we enter the date in this format then it should print as valid input or else it should throw an exception let’s see how to do that so in the tri block first I have read the input date and then output date and have created a reference for them and if there is any error in case of changing the date format or while converting the date formats then that exception will be handled in the catch block and next in the main method I have used a scanner class to read the format so let’s run the program and check the output so first let’s enter the date format which is invalid so I’ll give something so it’s telling that some error has occurred while converting the date formats so it’s telling exception is here that is when we’re trying to pass the exception and the unpassable date will be so and so now let’s execute it one more time and enter the proper date format that is 0 1 01 1 996 so it’s telling after changing the date format it will be this that is the one which I have given in this format from the input date format which is in day month and year it change the output date format by passing the input date to year month and date correct so this is how we can pass the exception so to begin with guys array is a data structure to hold you know more than one values so it’s going to be a multivalue container for us so it can contain homogeneous elements so you can say it’s a limitation or it’s a plus point right so it maintains the type safety check so we cannot store different type of data in the same array so it has to be the same type so if you’re going to create an array for integers it must be only integers now all the elements they are stored under one single variable name so we have a reference variable which will be pointing to the array now the data stored in an array is a contiguous memory location it means that they are the neighbor now so there are various different types by which we can represent the data in arrays so we can represent the data as single dimensional or 1D array which is storing the elements as in a row so just consider it as a row in a continuous row we are storing the elements so that is how we started right so in a use case to store the country’s population so this element can store State one population count next element can store the other state population count so on and so forth now two-dimensional array is array of arrays right so it’s a collection of collection now so here what we are understanding two dimensional array that it’s going to hold the population for the world let’s say the first array will store the population for Indian States the second array can hold the population for some other countries different states so if you have more than these kind of problems so where you have data coming up in the form of some let’s say you want to process images right you want to rotate an image you want to process an image on some colors so here we just don’t have a two Dimension array we just not have array of arrays so we got multi-dimensional arrays so in that regard we got this multi-dimensional arrays where lot of

    data can be stored so typically when you are going to come up with the image processing problem so you’ll be working in the multi-dimensional array so one of the use cases now let’s see how we can work with arrays so guys how we can create a 1D array so creating a 1D array is very basic so you give a reference variable name and you mention the data type with the new operator with the size and you’ll be able to get your array created in the ram area so reference variable with the new integer five will give you an array of five integers right so you need to be having this syntax where we can create an array now when you’ll create an array it will be indexed on the basis of size let’s say the size is five so there will be four indexes so 0 to n minus one so it going to be 0 to four for a size of five now every element in an array is accessible through this index for example when you say my array 0 isign 10 you writing the data in the zero index so thereafter you say 1 is 20 2 is 30 3 is 40 4 is 50 so you are actually writing the data into the array so a basic right operation and same way when you have the array constructed so at the time of construction you can mention the data right so the values can be given exactly at the time of construction so this time you need not to write the data so by default we’ll have the values coming in for your array so guys when we want to access any element in an array so you write down the reference variable name and you mention the index in a square bracket and you will be able to access it for example you say my array one it’s going to access the value 20 so you say my array 4 right so array four over here is supposed to be the value 50 so when you want to update something so you can just mention the index and you can give a new value so here it goes like my array 4 assign 100 so you are going to replace your array 4 as 100 so let’s have a quick practical example on 1D arrays so what I’m going to do is I’m going to create a new Java project project so let’s say a new Java project called array demo so we’ll begin with uh why we need arrays and thereafter we’ll process it further right so I’m going to say arrays with the main mathod let’s say 1D arrays the package goes like cod. edura now consider you want to store the population of a country right so you will have state one let’s say the population count is 52 same way you will have some other states coming in let’s say State 2 state three state four and state 5 right so let us see some populations are coming in for us now having this population stored in five different single value containers right so what are they they are single value containers they cannot hold more than one value so when I’m talking about State one state 2 state three state 4 and state 5 they are the different states right containing the population so I can say State one population count to be more precise right so considering that these are the different population counts for the different states of a country so rather than containing these single value containers what is a solution is to have a multi- value container right so how you’ll create a multivalue container so we’ll write one integer array so I’ll say population I’ll just write down this name as state population which goes like a new integer with five elements right so I gave the size myself that this array should have five elements so when you print out this state population when you run this code here so you will see that we getting some hash code in a hexa decimal format it says some integer array at the 785 e922 so what exactly has happened here so guys in the ram area so whenever you going to run the program so in this Ram structure so you’ll have this stack coming in as a data structure and the second thing is keep for us so I’ll just quickly write so this is Ram allocated this is the stack data structure this is the Heap data structure now we got this guy called population so if you see this state population so I’ll not use the term state population rather I’ll say country population so this guy contains 785 e922 right so country population is containing some hexa decimal over here 7852 e922 so it can be any number which is coming for us over here because it is not generated by us now in the Heap area there will be a storage container which will be created at the same hex code right so this is key value pair I mean to say it’s like hashing as an algorithm so this guy acts as a key where this is the storage container so we got these indexes coming in for your array right so that’s like zero index one index two index three index and the fourth index and by default we get the data as zeros right so we have all the data coming in as zeros so we have everything over here as zero and this guy country population is basically pointing out here now coming here I will first of all read the element in Array the first thing is reading the element in Array so what I’ll do I’ll simply say please print me the country population zero element so when I’ll say zeroth element so here we are with the zeroth element right so when you run this code you get to see that the value is zero so same way if I read it for the first element so you will see it’s going to give me again zero right so this is like reading the element and it’s like read single element so you access the element right so there can be the other way around that’s like read all so I can just put up a for loop I can say start with zero go till country population do length so length will give me the size of the array so what I will do is I will say ciso country population of I is plus country population I so where each and every index will represent a state okay so now when you run this code here you get to see all the values coming in as zero so when you create any array so all the elements will be by default zero so what I can do is so before I access my array I can do a right operation in Array right so WR operation so WR slash update operation so both of them are same for us so I can come here and say that the country population of zero index is 502 same way we have one then the two then the three then the four so you got 765 9987 4 56 and 876 so we are able to write the data and now I’m just going to do an empty line here and we’ll say rereading after write operation so when you run this code here so what you see is once we do a reread operation after writing the content in the array so we see the updated data right so now we have these values coming in 502 765 987 456 and 876 it means that here we don’t have zeros now right so rather than zero so you got the data coming in for us for example this guy will go as 502 now every index represents a state with the population count right so so having single value containers differently so we are having single value containers differently rather than having it in in an array is a more better version now the same syntax over here can be replaced like this so I can say in Array country population goes like this number 502 comma 765 987 456 and 876 so what does this mean this means that so here by default all the elements were zero right so in this declaration when we read so all elements were by default zero but here elements have some default initial value so here elements they have a default initial value so even you don’t write the data so let’s say we are not writing the data here so when you try to read it so you’ll always have the data in the AR now right so we not performing rather any right operation so what you will see is that you have the data coming in before you even do right operation so choice is yours so whatever the way you want to write an array you can do that so you can have an array with all the elements having default value as zero or you just specify the values whatever you want to provide so the same syntax can come up like this as well all right so don’t get confused it’s the same story right so this is an implicit way versus this is an explicit way so choice is yours right so any syntax you want to follow you can follow that so now the next thing is uh update operation so you already have the data so you can use the same assignment operator to update the data right so let’s see this update operation coming into the picture so now when you run the code so before before you had this data and now you are having this data so guys I hope this is clear to everyone right so rereading after the right operation so now this right operation has become the update operation so we can use 1D array anytime with the help of indexes we can perform a read operation on a single element we can perform read on all the elements we we can even perform a write or update operation but everything happens with the help of indexing right so there is one more way to read the array in Java so that’s like your enhanced for Loop or sometimes we call it as for each Loop so any name can be given to this guy so you say for in any element in your country population array you say print me the element so you run the code here so you get to see the data once again so here you don’t have indexes this Loop will start from the zero index we’ll copy the element at zero index into this variable Elm which can be any name of your choice right so it’s just an identifier so we are trading in this Loop so now you seriously want to come up and calculate the population for this country so I can create a variable called count which goes like zero and here I can say count plus assign or let it be simpler count is Count plus the element right and let me come here and say population count for entire country is plus the count so let’s run this Cod here and what you see is the population count coming in now now you might be surprised in a way that this was a bit easier approach storing the values in a single value container and having State one population count so why we are messing around with these indexes even though this looks very easy now assuming that you have to work on 30 States so you’ll be doing 1 + 2 + 3 + 4 + 5 + 6 it’s like a lot of time consuming thing as in development effort is highly so having this one liner where you just mention all the population counts and having a loop as couple of lines and summing up the entire population so when data is having more Dimensions so you need to focus on array right so solving the problems where you have lot of data so you structure it in a better way and arrays they are one of the most easiest data structures to use in your software Solutions so with this let’s now move to the next part so the next part is working with two dimensional arrays right so guys we call them array of arrays right so here we mention the row and column so row column here does not literally means a matrix concept so row column over here means that how many number of 1D arrays you want so the first element means how many 1D arrays and the second means how many elements in 1D array right so it’s basically array of arrays we can represent a matrix using two dimensional arrays so this is like zero arrays zero element zero arrays first element same way first arrays zero element first arrays first element so if you want to access you can say 0 0 is 100 so zero arrays zero element right so you put the data so same way you can put the data for the other elements now if you want you can access any element in a 2d array by mentioning its indexes and if you want to update the data it’s again on the basis of indexing right so guys let us try to have one example on 2D arrays so I’m going to write one new class let’s say 2D array with the main method so to begin with I’ll just say in two brackets I’m going to say world population so considering this world population so I’m going to have the first array for the first country right so let’s say all right now this is first array and let it be the second one so this goes like some second array and this goes like some third array right so this is zero Index this is first index and this is second index now when we are understanding this problem statement so we mean to say that zero represents country one and one represents some country two so just just taking an example so this represents some country 3 same way here this is country 1’s zero country 1’s one one then two then three then four and five and six so this is zero State first state so these are the states now which we are talking about guys right States for country one so these are the States for country one right as in uh indexing so the next is the state for the country two states for the Country Three so these are all counts right so they are the population counts all right so let’s say that you got country one as India and let’s say the zero state is Punjab so we got the population count for Punjab so that is how we are representing it so there can be some other country two there can be some other country three so we have represented the data into this entire array now when I will just try to say world population is is plus world population and size is plus world population dot length or let’s say and length is now when I will run this code here as Java application so what you will see is that it’s an array of arrays at a hash code right and the length is three so I got this guy called world population so I’m just going to take this another example here so we got this guy as world population 785 e2922 some hash code so this world population is something like this so it’s basically having three indexes and you got indexes coming as 2 1 and 0o right so this hash code goes like this and we got reference coming in here now the next thing is we got the 0 1 and two we got this world population coming in now what I’m going to do is I’m going to access the zero Index right so I’ll say world population zero then one and then two right so we will come up here and say 0 1 and two so guys this is array of arrays right so zeroth index is an array first index is an array and second index is also an array so I’m going to say print me the Zero’s length print me first length and print me the second length so zero length is like what seven right because there are seven elements then the next guy and the next guy they have their own sizes so when you run this program here so you get to see the sizes as 7 five and six at the same time what you see is we got different different references coming in some 42705 C6 so we have some you know hash codes so I’m just going to represent these hash codes here let’s say some 40001 let’s say some 3001 let’s say some 2001 so I’m just considering these numbers as hash codes so further we got these arrays so this is like 4,01 array 3001 and 2 so guys I’m just considering these mathematical numbers as hash codes right so this is like further pointing out here this guy pointing out here and this guy pointing out here so what is this concept this concept is array of arrays so world’s population zeroth index is an array right so we get to see this data over here so this data is available over here right so as in indexes so zero Index right so this guy is indexed for us so zero index one index two index then three then four then five and then six so on and so forth guys the others as well so if you say world population zero arrays first element it’s going to be 4 5 6 7 so that is how if I come here and if I say please print me world population let’s say zero arrays zeroth element right so world population 0 0 you run this code here and what you get to see is 1 2 3 4 so guys I hope you understood this point right so when I say one and two so first arrays zero index first index and the second index that’s like 8765 so here you are right so this is like one and two so anytime you want to read the array so this is like read single element right so you want to write the data so write or update they work in the same way right so for example now I will be doing an update operation so I’ll say world population of one and two is some number all sevens so you say see so rereading and now when I will do a reread operation here so let’s run this code so here you are with the number all sevens so same way you can even perform a read all operation so I can write a loop so the outer loop shall work for the world population. length so this Loop’s going to iterate three times because the length is three so from 0 to two because we got three 1D arrays then I got an inner loop which will go from let’s say J as in zero we will say J less than world population of I do length and j++ right and thereafter I’m going to say world population of I arrays jth Index right the print line and print line we’ll do in the next case so let me give one empty line here so here you are so now you are able to print the entire 2D array so guys array of arrays they can be powerful data structures when you have lot of data so you can even create an array of arrays by saying an ARR is a new integer so I want three 1D arrays with five elements each right so three 1D arrays with five elements each so here if you’ll try to read this guy so if you try to read ARR so any guesses guys what will be the output when you read AR so what do you think what will be the output for the AR right so output for the AR would be all zeros right so when you give the sizes you get the default values as zero and when you don’t give the sizes you give the default values so it’s just the basic conclusion to understand the arrays right so giving sizes we need to put the data later hence data initially would be zero so this is how we are understanding this guy array right so giving data first we need not to give any size so that’s like the thumb Rule and guys explore enhanced for loop on 2D arrays right so explore that how you can convert this nested for loop with the help of enhanced for Loop right so that you guys explore so this is how we got something known as two dimensional arrays and let me do one more problem statement so how we can solve this matrices problem so if you can recall your childhood mathematics so we used to do an addition subtraction multiplication and lot of other things on arrays or on matrices so we’ll write one small program here and we’ll try to solve it as an addition problem right so let’s let’s perform an operation on array once again so let’s take a problem statement here to add two arrays so I’ll write one 2D array called a which goes like the first array having one one and one so I’ll have all the values as ones right so same way I’m going to have the other guy called B so this array B I’m going to have the values as twos so it’s a 3 cross three Matrix representation three rows and three columns three rows and three columns so when I have this metrix representation coming in so what I’m going to do is I’m going to print them first right so let’s see Matrix a so I’ll say for INT go with the zero go less than a do length and uh then I’ll write one more for Loop so we got this 2D array so we need to access the elements so you need to come up with a of I do length and j++ so here I’m going to print this guy called a of I and J so this is the representation for Matrix a let’s represent the Matrix B so I’ll say B do length B of I and B of i j so let’s run the code here so this is how the two different matrices are coming guys right now what I’ll do is I’ll come here and I’ll create one another Matrix that’s like C which is a new integer of three and three right so we’ll take three rows three columns and uh what I’ll do is I’ll take one Loop here run it till C’s length and I’ll say C of i j is a of i j so guys we are adding the elements here right and B of I so what we are doing is we are adding this one with this two then this one with this two so on and so forth right and once I’m done with it so I’ll represent this guy called Matrix C here after the addition so all elements they should come up as C so you run the code here so you get to see that the Matrix 3 is coming as all the threes so here we are so one basic mathematical operation on matrices guys right we’ll see sorting and searching in arrays so there are various different algorithms through which we can sort the elements in an array and same way we can even do searching now typically when you are in an e-commerce shopping website let’s say Amazon or any other e-commerce so you want to sort the items on the basis of the price right so that’s like either ascending way or the descending way so one of the practical usages where you can actually apply these sorting algorithms so these are some commonly used algorithms and they have their own you know time and space complexities but we are not going to discuss that in detail here so we’ll typically see how they work and how we going to solve this problem to sort the data in an array so we got bubble sort selection sort insertion sort quick sort and Mer sort as algorithms which we are going to discuss for the day so let’s begin with bubble sort so guys given the Sorting techniques so when it comes to the bubble sort it’s one of the simplest sorting algorithm right so what it’s going to do is it’s going to perform the swapping of the adjacent elements in case they are in a wrong order right so we going to always swap the adjacent elements if they are in a wrong order so we are considering that we going to sort the array elements in an ascending Arrangement so let us see how it’s going to work so consider that we got set of elements as 4 1 10 – 3 and 12 so what bubble sort will do so in case of bubble sort so we’ll start one of the iteration so consider the I iteration so we’ll start from the zero index and we’ll compare the index 0 with the index 0 + 1 that’s like 4 and 1 we are going to compare here so when we compare we find that 4 is greater than one so we swap the elements now the next is where we are comparing 4 and 10 so four and 10 will pass because four is lesser than 10 then we’ll move on to the next adjacent elements that’s like 10 and minus 3 so when we compared them we found that minus 3 is a smaller one so we swap them and same way when we compare 10 and 12 so it’s perfectly fine so let’s pass now in the next iteration so we’ll Again Begin and we’ll now start from the next index of the aat loop so here now we’ll see Min -3 and 4 has been swapped and thereafter we’ll compare 4 and 10 and finally guys the last iteration so on and so forth will finally sort the array so what we are doing we are just comparing the adjacent elements so if one is found to be lesser than the other so you swap them right so let’s try to write a small code snippet on bubble sort and see how it’s going to work for us so I’ll write one small program here so let’s create a new class so I’ll say a bubble sort with the main method so considering that we got the elements of an array so let us take the same use case so 41 10 – 3 and 12 so this is the input sequence right so this is something which we are are looking forward to sort now in order to sort I’ll write one method here so let’s say this goes like static void I’m just going to say sort here so I’ll take array as input so the array which I want to sort and here we’ll come up and say bubbl sort do sort the AR so you’re passing by reference it means that if you sort this reference right so automatically this will be Sol so it’s basically reference concept which we are using here so the first thing first so I’m going to now calculate the length of the array so let’s say length is er dot length so this is the size of AR mores right so we’ll run one Loop so this is let’s say the outer loop which starts from zero and this Loop shall go till less than your length minus one and and thereafter I’ll say an I ++ so it means that this Loop will go from zero so this I Loop’s going to work from the zero index then one then two and then three right not the last one right so it’s less than length minus one right so if the length of my array is five so let’s say the length is five so the outer loop here shall work from 0 to 3 so it’s length minus one so we want to iterate till here now I’ll have one more Loop so let’s say this is the J Loop so J Loops begin with zero and J Loop will run from 0 to length minus of I and minus of 1 and then I’m going to say j++ it means the jth loop is dependent on the I value so if the I value is zero consider that if I is zero so your J will vary from 0 to now length minus i – 1 right so what is the length length is 5 minus 0 minus one that’s like 0 to 4 so on and so forth it’s going to work for the other indexes of I now let us compare in case the AR’s J index is greater than arr’s J + 1 Index right so if if the element is greater we are checking for the adjacent elements now if the adjacent elements are being compared and we find that arj is the greater guy so we’ll swap it right and we’ll use the swapping technique as a very basic swapping technique so we’ll have a temporary variable in which I’m going to put this jth element and thereafter we’ll have AR’s G element allocated with the ARR J + 1 and lastly we’ll have ARR J + 1 having the 10 so I’ll just write down here swap the adjacent elements and this is how our Logics going to work right so we keep on swapping and once this entire swapping is done the loops are terminated so you will get one sorted arrangement of your elements So when you say bubble sort. sort the ER so now if you say for Loop let’s say int element in the AR so I’ll simply see so and I’ll say element with some space so you run the code here as Java application so what you see is the sorted arrangement of your array – 3 1 4 10 and 12 so this is the very first and the very basic technique called bubble sort so we compare the adjacent elements and we swap them so guys let’s move next so for our next sorting algorithm we got something known as selection sort so guys selection sort is also one of the Sorting algorithms and here this guy will sort an array by find finding the minimum element and putting it to the beginning so we’ll keep on repeatedly doing these steps we’ll find the minimum element repeatedly and we’ll just place it in the beginning of the array so that is how our selection sort is going to work right so let us understand this so when we are in the first iteration so we exactly are trying to see the minimum number and we we will find that minus 3 is the minimum number in the first iteration so we’ll put it in the beginning now we’ll shift the next index and we’ll just keep on comparing and we’ll see that one is the shortest one so let it be there so thereafter we’ll move the index to the next position and we’ll see now who is the other small element we’ll find that four is the small element will now come up and put it in the beginning and lastly we are in the sorted set right so selection sort is comparing the number so we are just going to compare the number with all the elements wherever we find the shortest element we put it to the beginning right so let us have one small program with respect to selection sort and see how it’s going to work for us so the way we got bubble sort I’m going to say a new class here let us say goes like selection s with the main method so we’ll take the same use case so instead of having this bubble sort will have selection sort so I’ll create a similar sort method so let me copy this so you’ll have a similar method where we’re going to sort the data right so the structure begins in the same way so the thing is we need to come up and iterate for the same structure we going to iterate from 0 to length minus one so the internal structure it’s going to be a bit different now right so what I’ll do is I’ll first of all assume that the minimum element or you can say that minimum element on the index is the element at the ath index right so the minimum element right so I’ll just write here so assuming minimum element is at ith index so we’re assuming this part now right and we’ll Now look for any element who is a minimum than this so for that I’ll put up a loop which starts as in J’s value with I + 1 and J shall run less than the length of the array so we are iterating over the entire array and if in case we say that ARR of J is less than ARR of minimum index so considering that what we have is we have the jth element less than the minimum index element so what I’m going to do is I’m going to say let minimum index go as J so in the array we are finding the minimum index and once we got the minimum element so minimum index over here means guys we are targeting the minimum element right so here we are targeting the values not the index so we are just capturing the index of the minimum element now once we captured that so there after what I’m going to do is I’ll swap the minimum element with the first element so swap minimum element with first element so what I’ll do now is I’ll take up one temporary variable in which I’m going to store the minimum index so thereafter let’s have AR of minimum index x with ARR of I and thereafter the AR of I will be having the temporary so this is like swapping the element and not the adjacent elements the way we had it in the bubble s so this is a bit different way of dealing with the things but at the same time when you will execute this program of yours so what you find is the data is again sorted for us so how these algorithms are different so they have the different approaches to solve the same problem so they vary in time and space complexity of course but that is not something which we are going to take now so guys this is something known as selection sort right so how we are selecting the element which is minimum and then putting it into the beginning now let us move to the next part so guys next part we’re going to come up and discuss something known as insertion sort now what is insertion sort so when I’m talking about insertion sort so this is very much similar when we are playing the cards so what we do is we pick up the smallest card and we put it in the beginning so here we are going to work in the same way right so we going to pick an element and insert into the sorted sequence so let’s see one iteration that how insertion sort will be working for us so for insertion sort let us assume the same input so when we will compare four and one so you see that over here we got four and one being compared so we’ll swap them and now we’ll move into the guy called 10 and thereafter we see that minus 3 is again a smaller element so we’re going to shuffle it to the beginning so it’s just like the way you sort your cards so finally you’ll get a sorted sequence right so guys insertion sort is something which is sorting the data in a different approach for us so here we are going to again find the smallest value and swap the same right let’s try to write a code snippet on insertion sord and see how it’s going to work for us so let me come here and create a new class so this goes like insertion sort with the main method so let me take the similar method here so we’ll call it sort itself and coming here so we are going to work from 0 to length that’s like 0 to 4 so we’ll take the same sequence and we’ll see how it’s going to work for us so I’m going to say insertion sort do sort s right so let us now write the code to sort the array now I’ll first of all consider that there is a key which is basically ARR of I so we’re assuming that the very first index itself is a key and I’m going to now create one J which shall be your I -1 so basically I want to move the elements of the ARR from zero to this J so that whatsoever are greater than the key to the position ahead of their current position right so let me write the code that’s going to be more helpful for us so here I’ll say while J is greater than and equal to zero and ARR of J is greater than T so run the loop till we have these conditions being satisfied and if the loop is in execution so what I’ll do is I’ll say ARR of J + 1 you just copy the ARR of J and you decrement the value of J by one and once this Loop is terminated come out of the loop and we’ll have J + one index with the key so that is how we are sorting the array over here guys so so in order to sort what we are doing over here is we are moving elements of ARR from 0 to i-1 right but we are moving only those Elements which are greater than key and where we are moving so we are moving them to one position ahead of this current position so if the current position is J we are moving it to J + one exactly the way we do it in the cards right so you’re just moving them one position so guys now let us try to run the same code and see what happens for the Sorting technique over here so what we see is insertion sort has also sorted the array and the technique is modified but the outcome Still Remains the Same so insertion sought in action so guys once now we have since understood what is insertion sort so we’ll be now moving into the other algorithm called quick sort quick sort is not as in that it’s really a quicker algorithm to sort the elements but when it Compares itself to the merge s yes it is quicker so what exactly happens in the quick sort algorithm so guys it’s a divide and conquer algorithm so what we do is we partition our array and then we try to solve the problem so consider the set of elements 9541 72 3 and six so what we try to do over here is we will decide one of the elements in this array which can be serving as a pivot or a pivot so the pivot element is the element which can be either the first element the last element or the middle element or any random element of your choice so it can be any element now the whole idea is to choose this pivate element and break your array in such a way that all the elements left to the pivot should be less than or equal to it and the right to the same pivot we should have greater than elements so we are going to make our pivot to go into the exact position so this way we will be coming up and sorting up the entire array so Shifting the pivot to the right position will be our key success now consider six is the pivate number from the entire list of sequence now consider the ath index or the ath variable and a jth variable so the variable J will be iterating over the array and we will be comparing each and every element to the pivot that’s like six so considering when your J is zero that’s like the number nine so we’re going to compare 6 and N so we know that when you compare the number six and N so 9 is greater than 6 right so we are okay to go with it now we increment the J and we bring it to the five when you compare five and six we find that this jth element is less than the pivot so whosoever is less it should move in the beginning or to the left so what we are going to do is if we find the element lesser than the pivot we are going to move it to the beginning or we are just going to swap number nine and number five and now I am again reiterating on the JF index and I have incremented the I index as well so let’s say initially I was pointing to this guy five but when we did a swap on 9 and five we incremented the variable I as well now the new number with the JF index is four so if you compare six and four so we understood that four is lesser than six so what we’ll be doing is we will be res swapping your number nine and four and then increment I now again six and one there compared and we see that one is less so you again swap but seven is greater you don’t swap but two is what which we know is lesser so what we’re going to do is we’re going to swap your two with the nine so on and so forth so lastly what you will have is you’ll have the elements that’s like 5 4 1 2 and three which are lesser than the six and 9 and seven greater than the six so we get this six exactly positioned after three and before 9 right so guys that is how we are doing this partition and then we are sorting the structure so let’s see a code snipp it on quick sort so I have this code walk through here so what I have is I have the input sequence of the same elements 95 41 72 3 and 6 so we got this sort method here where I’m passing array the zero index the length minus one so these are the initial inputs to this sort method so here we are with the sort method so if you got low less than the high which exactly it is so we are going to call the method partition with the array low and high now partition method is working in the same way so we are considering the pivot as the last index so high means the last index the last element now index of the smaller element shall be low minus one so that’s like we are trating this variable I and we are iterating in the jth loop which will iterate in the entire array so if the arj is less than the pivot we are going to swap AR I and arj and will also increment the variable I and finally once you are done with everything so what we we going to do is we’re going to move our pivot to the right place So eventually entire array to the left of pivot should be less or equal and to the right will be greater so putting the pivate to the correct position that is what we did in this partition method so recursively we are going to sort it and till time we don’t get the correct elements in the list we keep on sorting them so when we run this code quick sort. sort and you see we will have the elements in the correct order that’s like 1 2 3 4 5 6 7 and N so this is what we got As in quick s guys right so guys now let’s have look at the other algorithm for sorting that’s like the merge sort now merge sort is also a divide and conquer algorithmic approach so what we’re going to do is we’re going to divide the array in two halves right so you say it as left and the right one so here what we will be doing is we’ll take one example of the same sequence 4 1 10 – 3 and 12 so we going to divide this array into two different halves so once you divide the array so you keep on dividing the array further so you see once you are dividing the array you divide till we got all the single individual elements and once we have all the single individual elements right so therea we’ll start working on merging these arrays right so here guys will write something known as a merge function which will merge the two halves based on which is greater which is smaller so what we’re going to do is we’re going to merge first of all one and four we’ll see that one is smaller number so we’re going to place it first and then we’re going to bring it four right so so on and so forth we keep on merging the elements and we’ll first of all finish the merge on the left array then we’ll finish the merge on the right array and lastly we’re going to merge left and right array both which will be the sorted Arrangement at the end so in this merge sort algorithm divide the arrays into two subarrays left and right so thereafter you sort the arrays at the end right so let’s have a quick look on how this algorithm can work for us so I already have the code snipper for this so let me just open it so here we are so now typically for a merge sort algorithm how it’s going to work is so we got this function called merge and I’m going to take the same sequence of inputs so that’s like 4 1 10 – 3 and 12 so just give me a moment so 4 1 10 – 3 and 12 right so what we are doing here let’s see now so we got this guy called merge as one method which is supposed to merge to arrays and if you will see over here we got sort which is going to sort the two arrays and thereafter it’s going to merge so I’m going to initiate my program by executing the sort method right so for the sort method I am passing array to be sorted I’m passing the lower index that’s like zero and I’m passing the higher index that’s like your length minus one so this zero index and this guy is the fourth index now in case L is less than R which it is so we are going to come up and say let us find the mid L + r by 2 and we now calling the sort method twice the first sort happens on the AR r l comma M the second sort happens on M +1 and R right so once we sort the left and the right part then we are going to merge both of them so here when I’m doing a sorting so you need to understand that it’s a recursive call so we are calling the method again and again until this condition is satisfied so what happens in the merge part so here what we see is we got two different sizes right so S1 and S2 are the two different sizes for the arrays so we are creating the left array and the right array based on two different sizes so the left and the right array size so what I do is I copy the elements in the left array and in the right array so this is merge over here method so this is going to merge two arrays which we partitioned and you got l R which will be working from your L to M and we have this guy called let’s say R AR so there is subarray one and subarray two right so I’ll just say one and this guy ARR two so the second array is going to work from m + 1 till R now we are copying the elements here so create sub arrays so this is like create sub arrays and here what we are doing is we we are copying elements into sub arrays and now once you have copied the elements so we’ll start the process of merging right so let’s say start merging process here now in the merging process so what we got is we got indexes for the first and the second array so I’ll take the zeroth index to be the initial index and once I have taken that so I take the initial index of merged sub AR aray so that’s like K is L now while your I is less than the S1 and J is less than S2 so what we will be doing is we’ll be further checking if I index in the left is less than or equal to if it is so we going to assign the arr’s K index with the ith index in the left array and then you increment the I other way around it’s the right array which has to be considered so till I will be less than S1 we are going to come up and copy the ath index in the left array into the kth index and then you increment the I and the K so lastly guys if the J index is less than S2 you do it for the same part but you are doing it in the right array so we got something known as merge process and we got something known as sort process so when you run this code here So eventually you will again get the sorted outcome so guys sorting can work in various different ways so we got this technique called merge sort where you keep on dividing the array and thereafter once you have individual elements you start the merging sequence so this is the final outcome that how we going to work with it next part is how we are going to search in the arrays the first one is a linear search so what we going to do is we going to identify an element that whether it is there in the array or not so begin from the zero index will keep on advancing till the last index so once the element is found we get to know the index which index it is and thereafter we return back the index so in the linear search operation so we get to see that there are few inputs to the method so we going to return the index of the element which is found right so considering the use case right so we are planning to have this linear search so we’ll write one small program let’s have it with the main method so I’m going to take the same sequence of inputs which we have been following so this is the array and let’s say the element which you want to search is the number 10 whether the 10 is there or not so I’ll write down this static int search or let’s say this is uh linear search so in the linear search I’ll pass one array and element which I want to search right so this is how we are going to come up with the linear search approach so we’ll get to find the index so by default I’m keeping the value of index as minus one and I will return the index at the end now you just say for in I is z i less than the ARR dot length and I ++ right so you trading in the entire array so less than length is your n now if element is going to match the ARR of I right so if it is going to match the ARR of I so I’m going to say index is I and thereafter I’m going to break the loop so now you come here and say in found index is linear search dot linear search array and the element 10 we know where is the 10 element right the 10 element is at 0 1 and two second index so let us say if I is not equal to minus1 we’ll find the element and uh sorry so this guy is found index so let’s say if the the found index is not less than I mean not equal to minus1 so we got the element in the else case I’ll say C so element plus element not found or the other way around I’ll say C so element plus the element found at plus the found index so this is what we got so now when you run this code here so it say is element 10 found at two Index right so it’s the second index where you have this element 10 let’s say this guy as 12 you run the code it’s going to say at 4 index but if you try to enter something like 120 so you going to get element 120 not found so guys linear search algorithm is where you begin from the zero index and you keep on comparing till the last Index right so so the next searching technique over here with us is binary search so in the binary search what we’re going to do is we’re going to sort the array first right so we should have a sorted set of array and when you are going to find the element so you are dividing this array into two parts so we’re going to divide the array as in the left side and the right side so if you are finding some array in the binary search right right so this is now very much simple approach what we did in a linear search but the only thing is this we’ll be searching the element into a corresponding half so we keep on dividing the array to find the element okay so now let’s say you want to find this element number 79 so what we are going to do is we are going to take the right part of the array so as to search that element we will not into the lower half and into the upper half also we’ll keep on dividing the array again and again so let’s try to write a binary search algorithm and see how we can do a small search operation so this is basically going to save the time so this is optimized on time complexity so let me write a new class and this goes like binary search with the main method so similar to your for linear search I’ll just have this so this is what we got over here as let’s say static int binary search so I’m going to take array as input then I’m going to take something like left something like right and the last one is let’s say the element X so which you are going to uh search now the guy over here is going to check whether R is greater than or equal to l so if R is greater than equal to l then we going to find the mid so the mid goes like L + r – L IDE by 2 so we got the mid part and now so I’ll use recursive technique over here so in case so let’s say if element is found at the same middle index so I’ll just keep a check that if ARR of mid is equal to this guy called X then you just return this guy called mid so I’ll return the middle index itself right now there can be the other possible use cases so let’s say if element is smaller than the middle in case element is smaller than the middle so it means what hence element shall be present in the left part of array so element would be there in the left array and hence what I’ll do is I’ll just put up a small condition that in case AR RR of mid is greater than the X element which we are going to found so here I will again do the binary search so I’m going to do again the binary search but to do the binary search now so I’ll go with mid minus one and I’m finding the same guy X right so we finding the same guy X over here and lastly guys so I’m going to say return me so return me a binary search of er your mid + one right and X so else the element will only be available in the right part of array so this is is the case where element shall be present in the right part of array so if it is in the left so you execute this so return from here else uh you come if this condition fails we’re going to return this part and let’s say if we reach to a stage where element is not at all available right so if the element is not present then what then you should return – one so let’s try to come and say return of minus1 so here I’m going to perform a binary search called binary search and you need to make sure that the array is in a sorted Arrangement right so we’ll say this array over here so you need to sort this array first so what I can do is I can just make it Min – 3 1 4 10 and 12 right so that’s like the precondition array must be sorted first now when your array is sorted so let’s say you need to find the element called four and in the binary search you pass the ARR that’s like the first thing then you pass your zero index so guys let me just take some more inputs here so let’s say the length is ARR Dot length so this is the length of the AR and I’ll pass length minus1 and the element which I want to search so we are searching for this guy called four let’s give a small run on this and let’s try to see what happens so it says element 4 found at second index let’s search for 12 it says at Fourth index and when I say 120 you give a run here it says 120 KN pound so guys this is a binary search operation you keep on dividing your array into sub arrays to the left and to the right and then follow that array in which your element would be present right so greater than or less than condition check so this is a recursion approach through which we are solving this binary search problem so this is what we have over here as in the binary search part a Java collection framework provides an architecture to store and manipulate a group of objects and it includes interfaces classes and algorithm in this figure blue boxes refers to the different interfaces and the gray color rectangles defines the class so here list is an interface and array list link list Vector all these classes implements list as a interface similarly as d Q is also a interface so it extends an inherit Q interface now talking about array list it uses a dynamic array for storing the elements it inherits abstract list class and implements list interface then list interface extends collection and iterable interfaces in hierarchical order so this is about the hierarchy of array list class now let’s see what is array list array list is a part of collection framework and is the implementation of list interface where the elements can be D dynamically added or removed from the list also the size of the list is increased dynamically if the elements are added more than the initial size though it may be slower than the standard arrays but can be very helpful in programs where lots of manipulation in the array is required some key points to note here array list is initialized by a size however the size can increase if the collection grows or shrunk if the objects are removed from the collection next array list allows us to randomly access the list and array list cannot be used for primitive types like in care Etc to access all those we need a wrapper class for such cases now let’s move further and say the internal working of array list first we create an empty array and then go on adding the elements once the size of the array is full that is if the size of the current elements is greater than the maximum size of the array then we have to increase the size of the array but the size of the array cannot be increased dynamically so what happens internally is a new array is created and the old array is copied to the new array so by this automatically the size will be doubled and it will be increased so you can go on adding the elements how much you require so that’s how it works internally now let’s see the various Constructor supported by Java array list first array list this Constructor Builds an empty array list coming to syntax my array is a reference to an array list that holds the references to object of Type e array has has the initial capacity of 10 cells although the capacity will be increased as needed as references are added to the list and cells will contain references to objects of Type e next array list of collection C this Constructor is used to add all the elements of specified collection C to the current array list that is you can add all the specified collection C to the current array list next array list of incapacity here this is used to build an array list that has a specific ified initial capacity and initial capacity is the number of cells that the array list starts with it can expand Beyond this capacity if you add more elements now let’s see a small example to understand how and where these Constructors are used in Array list I will open my eclipse and first create package called edura now I will create a class called Constructor the very first thing that I do before writing the code is I will import util dostar package now let’s begin with the code I will first create the array list of type string I initialize the counter value to zero and using Advanced for Loop I’m trying to increase the count of counter but we don’t have any elements present in the array list so if I try to print the counter value it will not retain any value why because we don’t have any elements present in the list okay now I will create one more array list and initialize the capacity to that I’ll change the name and give it as B and I will initialize the capacity to 1 okay now again if we try to print the counter value it will not print because we have just initialized the capacity again if we try to obtain the value of counter it won’t get incremented why because we don’t have anything in the list now let’s create a string array and add some elements into it after creating a string array I will create a object of array list and then upend a element using ad method so let’s see how to do that so this is how I will add element using add method now I will use Advanced for Loop to print the elements present in the array list now let’s run the program and see what will be the output so here is the output as I have already told it won’t return the counter value because the array list is empty and the counter value will be automatically zero next on creating a string and adding the elements it has retrieved all the elements present in the string even with the one that we have added that is j2w so this is how Constructors are used in ARR list now let’s dive into the various methods supported by ARR list first add method this method is used to add the elements to the array list that is it is used to insert a specific element at a specific position index in a list for example you can create array list and go on adding the elements using the ad method we will demonstrate and see all the methods of array list in Eclipse after knowing the concepts of them next clear method this method is used to remove all the elements from the list that is you can just use Clear method to remove all the elements present in the list next trim to size this method trims the capacity of an array list instance to the list current size that is if you are creating an array list of size 9 and if you’re adding only three elements to that on calling this method trim to size it trims the size of array list from 9 to three that is it reduces the array list size to the number of element that it contains in the array list next index of this method Returns the index of first occurrence of the specified element in the list if that element is not present in the list then it returns minus one suppose in this case if you want to return the index of five and if you write here five then it will return a of two because a of one and a of two but if you try to find the index of three which is not present in the array list then it will return minus one that is it returns minus one if the list does not contain the particular element next object clone this method is used to return a copy of the array list that is on calling this method it clones entire array list so for example if you’re adding two elements in the array and you’re cloning the entire thing then again after clone list it will return the whole element present in the array list next object to array this method is used to return an array containing of all the elements in the list in the current order for example if you have all the elements in the list then it will return all the elements in the list in the correct order next remove method this method removes the first occurrence of a specified element from the list if it is present for example if you want to remove n from the added list then it removes the first occurrence of n if there is one more occurrence of n here it won’t remove that next size this Returns the number of elements in the list that is the size of the list suppose say we have added four elements then it Returns the size of the array list as four now let’s demonstrate all the methods and see how it works and how it is used I’ll create one more class called ARR list now in this example we’ll see how to add the elements we’ll create an AR list of type Al that is a reference and we’ll go on at adding the elements into this now we have added three elements now let’s try to print the size of the array and the contents present in the array let’s execute and see what will be the output so the size of the array list is three and the contents of array is edura Java and arrays now I want to remove Java from the list so what will I do here is I will use a remove method to remove the element from the list now again let’s print the size of the arist after deletions so when you remove Java from the list it retrieved only edura and aray and the size will be decreased to two so this is how we can remove the element we can add the elements and we can retrieve the size of the array list now let’s see how to clone the array list first we’ll make clone list as object and then call the method now let’s execute and see how the Clone list appears so as we have already removed the elements from the list so it it returns only the elements after deletion in the Clone list so if I make whole remove part as comment and execute then it will retrieve the entire elements present in the array list see that is elements in the Clone list are edura Java and arrays now let’s see how object to array method works on executing this this is how the output looks now let’s use Clear method and clear the array list it’s very simple Al do clear and print the elements after applying clear method nothing will be present in the array that is the entire list will be cleared now let’s see how to create a custom array list and add the elements move the elements and retrieve the size of that I’ll create a class called custom array say I want to create a class of student data wherein I’ll be initializing role number name marks and phone number so let’s see how to do that I’ll create a class called student data and initialize variables now I will create a Constructor and add the reference to the these variables now let’s begin with the main method now let’s create a custom array list and reference a variables using add values method I’m adding the values now I will invoke this function and Define it here I’m in working list of add method to add the elements in the list now in order to print the values present in the list I’m invoking a function called print values of list and here I will give the definition for that and now let’s print the values present in the list now let’s execute and see what will be the output that is it displays all the elements present in the array list that is the rle number name marks and mobile number now if you want to remove one of the rows from the array list let’s see how to do it using remove method here I will give list. remove now if you want to remove the row of elements from the array list then you can remove the elements from the list and then print the rest of the elements so let’s see what will be the output so output is like this first it has printed all the elements present in the list then it printed the size of the list and it removed the first occurrence when you use remove method it removes the first occurrence present in the list that is it removes the first value so it has removed the first row that is Chris and it retrieved the the rest of the elements so that’s how you can create a custom AR list and add the elements accordingly now let’s jump into the last topic of today’s discussion that is advantages of array list over array first array list is variable length arrays are a fixed length you cannot change the size of the array once they are created but array list is variable length that is it can grow and Shrink dynamically next size of the array can be modified dynamically when you add the elements into an array the size will be increased and if you remove the elements the size will be automatically decreased next you can add any type of the data Maybe list Union structure Etc not only that it also allows you to add the duplicate elements in the list next you can Traverse an array list in both the directions that is forward and backward directions using list iterator and it also allows you to insert and remove the elements at a particular position so I hope you understood the concept of array list and the difference between array and array list now if you’re talking about Java Springs right so we can process our textual data very easily given a use case so we write a sentence so we can very easily search some words in the sentence we can use an API like contains which can tell whether the word is there in the string or not right so so searching is one of the inbuilt feature in the string API then we can divide our string into you know multiple parts so we can say as a sub string moving ahead we can even create new strings out of the old strings for example the quick brown fox jumps over the lazy dog we can say the quick fox jumps and the quick lazy dog so these are the different strings which we can manipulate our existing strings and we can create the new strings but remember the old string never ever changes it’s always the new string which is created since strings in Java they are immutable now java. lang. string is a class in Java so guys this class is basically implementing few interfaces serializable comparable and Cas sequence so when we talk about the class string it’s a final class which you cannot inherit so every class in Java will be the child of object either you create or it’s a built-in class so it implements serializable comparable and the car sequence so let us see what these three interfaces will be for Strings now serializable is just a marker interface now when we talk about a marker interface guys so it will not contain any data member or method it is basically uh marking the Java classes so that our compiler can come to know about these classes now serializable are the ones for whom we can save the state in some files so there’s a concept called serialization and deserialization so saving the state of an object and recovering the state of an object from a file now comparable is basically that if you have a string and if you want to order uh the data in the string you want to sort you want to compare so we got some methods available with the help of which we can very easily do that for example a method called compare to can compare one string with the other string whether they are equal or not then we got cash sequence interface guys this is a readable sequence of correctors and this is supposed to provide some readon exess and the other thing is that car sequence is basically parent to three classes right string string buffer and string Builder now string is a class which can create textual content for us where this guy is immutable so we cannot change the data once

    it is created so you can even say strings they are nothing but their data or their values they are literals and we cannot change them but string buffer and string Builder they are again the car sequences which can manipulate the data within so they are the mutable versions of the strength moving ahead buffer and Builder they are different in a way that buffer is not thread safe whereas Builder is thread safe so my bad buffer is is thread safe whereas Builder is not thread safe right so what is thread safety guys thread safety is synchronization when multiple threads they are going to access the same single object there we need synchronization so string buffer is builtin and it is by default synchronized but the Builder is not synchronized so that is the difference between buffer and Builder now we’ll understand how we can create strings in the map memory so strings in the memory they are created in an area called string pool now when we are talking about string pool so Java string pool refers to collection of strings which are stored in the Heap memory so in the Heap area so there would be a string pool which will be created and as string objects are immutable in nature the concept of string pool came into the picture so string pool will help in Saving the space for Java run type so let us see how string pool is going to work for us and how it’s going to save memory for us now if you want to create a string there are two ways either you can create it as a literal we call it an intern string or you create it with the new keyword we call it an object right so let us have a quick look on how we create a string and how he and how the string pool comes into action so considering we are going to use little L Al to create a string so guys Java string literal is created by just writing the string literal in double codes so how you will do it you’ll say string Str Str is urea you need to use these double codes so when I’m saying St Str so guys St Str is basically a reference variable which is pointing to edura like this so in the string pool we got a literal called edura and Str Str will contain the hash code for that literal and uh this is how we got a relationship mapping now same way when we want to create a new string with the same name let’s say I want to write another string but that will also be Ura so for that what happens so before creating a string literal right so first a lookup happens for the value in the string pool if the same value is already label in the string pool right so a new string will not be created rather the reference of that string will be returned for an instance if I write string s str1 is edura it means what will happen St str1 will also point to the same string so literals they are created once they are not recreated same way when I will say string St str2 is welcome now welcome is not there in the string pool so what will happen a new literal welcome will be created to which s str2 will point so once again a quick review string literals we also call them an interned way of creating the strings in turn way of creating the strings is where a string literal gets created into the string pool once a literal is created it will not be recreated so if you set that string as R is edura so we are not going to come up again for string Str str1 is edura so it’s going to point to the same string literal for a different string literal we’ll have a different you know memory region created so string s str2 is welcome will point to a different literal and hence the string pool so how it is saving the memory by creating literals once right so sharing of string literals because these literals they are the values and they can never ever be modified they’re kind of constants now the way 10 one Z is a literal it cannot be changed same way these are the literals they cannot be changed now uh the other way of creating a string is if you write a new keyword so whenever you’re going to use a new keyword so it is basically going to create a new object in the Heap M so for an instance if I say string s str3 is a new string urea what’s going to happen so there will be a new object created in the heat memory so it’s like the just the other objects which get created in the memory right so it’s always a new object it’s not going to point to the string pool now so guys this is the difference between how we can create a string literal and how we can create a string object so object construction happens with the new keyword and it is always a new object so even if I will say string St str4 is a new string with adura it will be a different object constructed in the memory even though the contents are same but new keyword will always create a new string object in the memory now we’ll see some string Methods so guys we got string class which is a built-in class and we will be exploring these uh methods what are the built-in methods we will also try to explore them practically but let’s first of all have a look on on the list so we got this method called Equals which will check whether the uh given string is equal to the other string or not so it’s comparing the contents in the string now equals ignore case will ignore the case right so whether the upper case or the lower case it won’t matter for us length Returns the length of a string then we can get the character at any index now string is a you know collection of characters so they are indexed internally from 0 to n minus one so Car Act you pass the index and you’ll get the character at that index from the string two uppercase Returns the string in the uppercase lower case will generate a lower case string then replace can replace an old character with the new character and thereafter a new string can be constructed so remember whenever we are manipulating the strings whether the intern strings or the non- intern strings we are always getting a new string now trim is a method which is going to uh remove the wide spaces from the beginning and the ending of the string then contains method will give a quick check so it’s going to search whether a string is existing in a string so part of string exists in a string or not two car array so we can get our strings converted to the character array by calling the method 2 C array then we got is empty to check whether the string is empty or not ends with so we can check that whether the string ends with a specified suffix for example you want to generate an application where you want to list all the images so you’re writing a file explorer app you want to read the files and you want to check whether they are extensions are jpg or PNG so we got ends with right then similar to the ends with we even have starts with then we got concat which can concatenate the two strings right so it’s like appending the strings and regenerating a new string so guys let’s have small demonstration on string Methods so I’m going to create a new Java project so let us name this as strings demo so here I’m going to write a class let’s say strings Java strings I’m going to say a cod. Ura as a package with the main method there are two ways to create a string so I will say string St Str one is hello right so this is known as intered way or we can say string literals so where are they stored they are stored in stored in string pool right now I will say string St R2 is also Hollow so guys St str1 and Str str2 they are two different reference variables but they are pointing to the same literal hello Str str1 and Str str2 reference variables pointing to the same lital so as we saw in our uh string pool example during the presentation part now if I’m going to compare these strings if I will say if Str str1 is equal to Str str2 so here I’m going to say s str1 equal to s str2 in the lse case I will say St str1 not equal to Str str2 so what are we comparing here we are not comparing content that is hello so what we are doing here so we are comparing hash codes of Str str1 and Str str2 hash codes in Str str1 and in Str str2 which will be same for the string Hollow now literally is created once right so Str str1 as a reference variable and Str str2 as a reference variable they are pointing to the same string hello so we comparing the references here so when I will run run this code what you’ll get to see is that they are equal now the other way around is uh where I’m going to say string Str str3 is a new string of hello so what is this this is known as object string object that is we used new operator so here string object is construct in Heap area with Hollow as its contents at the same time when I will say string s str4 is new string hello so guys what has happened St str1 St str3 and Str str4 are reference variables which are pointing to two different objects who whose content is same now that is something which we need to understand so we are basically having these two different strings two different reference variables which are pointing to two different objects whose content is same so when we are going to compare Str str3 and S str4 we are not comparing the content we are again comparing the hash codes in s Str three and Str Str 4 which will be different for the different for the string object containing hello so see there’s a difference now right so if you will compare three with the four so when I’ll compare three and four you will see it is not equal to so this is the first proof of concept and as a conclusion we understand equals to will compare reference variables that is Hash codes and not the real content that is hello so equal to is comparing the references it’s not comparing the content and we also saw that if we have a literal if we create a string literal so there we get to have the same reference for the same strength so s Tier 1 was compared but s tier 3 and S 4 were not compare so how we should compare right so how should we compare strings there are two ways the first way I’m going to write here that if Str str3 dot equals Str str4 so that’s like the equals method it’s going to return me either true or false I’m going to say Str str3 is equal to Str str4 and the else part where it is not equal to Str str4 now when you run the code you see it is equal so remember if you want to compare the strings right so that is the content within right so you want to compare the content within you never ever use equal to operator because equal to operators is working it is working only on the reference comparison where equals as a method is comparing the content within right now the equals method is one thing the other thing is compare to Method you can say if s str3 do compare to St str4 and if this gives me zero right so this is a comparison St str3 compared to s str4 in the else case I can just say s str3 not compared to S str4 so let us run this code here so compared to S str4 and is equal to Str str4 so this is what we got guys right as in the two different you know ifls structures how we can compare the strengths now let us explore some string apis so more on string apis so some string Methods to begin with let us create a spring called s Str which is John Jenny Jim Jack Joe so we got this string John Jenny Jim Jack and Joe and what I’m going to do here is so I will see the first thing we’ll get the length right so I’ll say in length is s Str do length so we can say ciso length of s Str is plus the length now when I run the code here you see it gives us the length as 28 so when I get the length as 28 now there are characters right so I can just come here and say St Str do Car at0 Plus bar + SD do carat length minus one so when you run the code so even before I run the code so I’ll just print out the S Str so let’s say SD R is plus Str Str so I’m just going to print the string so it says Str Str is John Jenny Jim Jack and Joe length is 28 the character at Zer is J and the character at length minus one that is 28 – 1 27 is e so uh string starts with the zero and goes till n minus one that’s like length minus one now considering I will say Str Str do2 uppercase I will say St Str Now or S Str after uppercase is plus s strr so we are very simply trying to say uh that I want to convert the string to uppercase but when you run this code here you see that string is not manipulated so here we see no changes right so why we didn’t see any change so reason is that strings are immutable so when you run this code here so you see no change string Remains the Same so what exactly is happening here so you are getting a new string let’s say S1 so you’re getting a new string generated and when you will say see so S1 is plus S1 so you run the code here you see that S1 is manipulated a new string is created so guys whenever we are talking about string manipulation string manipulation means a new string will be generated but old string will not be modified so that brings in the first understanding that strings are immutable they cannot be changed we cannot modify their content now the next part so the way we got two uppercase in a similar way we got to lower case so I can search in the string I can say if s str. contain John right or let’s say not the John let’s say Jim so Jim is somewhere in between so I’ll simply come here and say Jim is in the string you run the code now it says Jim is in the string so contains method will help us to check whether a string is there a substring is there in the string or not now considering you want to break the string into a small string we can use a substring method I can say string S2 is Str Str Dot substring from the index number five so this is 0 1 2 3 4 and five index is this space right so I will say ciso S2 is+ S2 you run the code now what you see is that uh the guy John is trimmed off from the space till the end we got a new string so this is known as a substring a substring you mention the index so till from 0 to 4 string will be removed and there onwards five onwards you get a new string so even I can uh say string S3 is s dot a substring you go from six to uh let us say 10 so let us see what we will get in S3 so I’ll say S3 is plus S3 so when I run this code you see it is saying J NN now what is six let us see here guys right so 0 1 2 3 4 and this five till here we got the five index so start with six six 7 8 and 9 so 10 not inclusive right right so what is this so starts with sixth index and till 9 Index right so it’s like that is less than 10 so that’s like sub stringing so we can have a string so we can even replace the characters here so what I can do is I can say string S4 is Str Str do replace the character J with the character K so remember always you will get a new string right so now if you see S4 is plus of S4 so if you run this Cod here you see k canny Kim KAC and Co so instead of John Jenny Jim Jack and Joe now the next part here I will uh try to now uh you know get all the characters from the string so I will create a car array CH ER R which is s Str do2 care array so I have just converted the entire string into the array of characters so I got the array of characters from the string now I can say for car CH in ch so putting up an enhanced for Loop so I’ll just do a print not the print line and I’m going to print the CH along with some space that is what I’m going to do so lastly I put an empty print line so when I run the code here so you see the string with the space coming in so this was read as an array of correct s so we got array of characters coming in now let us take one of the use cases where I want all these uh you know names pulled out of this string that is like St Str I want to pull all the names from this string so what I can do is I can say a string array so let us say St Str RR so we will say St str s Str do split on the basis of comma so when need to put in a pattern on the basis of which we can uh you know split the string so thereafter I will say for string s in s Str ER so I’m going to do a ciso on S so when you run the code here what you see is that we got all the strings coming in but here we can see some uh space in the beginning because we got a space in the beginning after this comma right so if you want to remove the space you can just call the method called trim so trim is going to remove the space in the front or in the end beginning or ending right so now you see there is no space so splitting will help us to get the strings out of uh the string on the basis of some pattern right some pattern now moving ahead I’m going to write a string called email which is like John at some example.com and string like let’s say phone which is some phone number let’s say 9 999 and thereafter 88 8 8 and 8 so some string right for the phone number and let’s say there is a password so for this uh the password goes like password 1 2 3 so uh this is what this is data during registration right so while we are registering the user we are going to have this data from the user so you want to validate the data right so we would like to validate the data from user that is whether the data is correct or not right so I can simply come up and say if email do is empty so I’ll put a not here so if email is not empty right so I I can say ciso email is available other than in the else case I can say ciso please provide an email now if email is not empty email is available there can be even one more check that if email do contains atate and email do contains a DOT operator so if it is containing then it’s a valid email right so if I’ll put a not here it means that if anything is missing I can simply say email is available but email is not a valid email in the else case I can see see so email is a valid one so this is how we can you know use our string operations to check whether we get the correct string from the user or not so when I run this code here it says email is available email is a valid one so if you don’t put the email so let’s say email is empty here and you run the code so what you see is that email over here is not provided so it says Please provide an email so same way if you write an email with missing of at the rate so it says email is available all right so I think here I just need to put a check email contains so it should contain this and this right so so email is available but the email is not a valid email so we can put some conditions and check whether the data is correctly formed or not at the same time I can simply come here if phone dot is empty so if phone is not empty right same way the else part so please provide a phone number so here what we can do is we can see phone number is available and I can put one more check if phone do length is let’s say uh not equal to 10 so we are looking for a phone with the length as 10 right and the else part so I can say C so phone number is a valid one right so here I can say but phone number is not a valid number so similar validations right it says phone number is available phone number is a valid one so you miss out the phone number here you run the code it says please provide a phone number so you can get the things in order guys right so if the length is not 10 it says phone number is not a valid number so we are putting some validations here so same way you can put it on password now all these discussions which we have done so we are concluding one thing that strings are immutable so it means what if I create a string let’s say string is a new string and I say hello here and thereafter I will say spring do concat a space and a world right so concat is to append so we can even append the data like uh with the plus operator so that will also pend the data now I will say ciso string is plus the string if you run the Cod here it is just hello so this brings up the conclusion that strings are immutable we cannot change them so it is always a new string which will be constructed if you’re are going to do a concatenation now we got a version called string buffer so here I’m going to say hello now buffer and strings they are similar so we we will use aend instead of concap right so here I’ll say world and now when you’ll say ciso buffer is plus the buffer so what you will see is that in case of string buffer string is appended so data is manipulated in case of string buffer but not in case of string over here so this brings out that in case you want to manipulate the data in the same string right so we got this guy called string buffer which is mutable so mutable sequences of the string they are known as string buffer as well string Builder so the way you got buffer in a similar way we have string Builder the only difference is that Builder is not thread save whereas buffer is a thread save structure so the output shall be same for both of them and the usage is also same so I will say Builder is plus the Builder here so you run the code so you see buffer and Builder they work same way the difference is that buffer is thread save whereas this guy is not thread save so guys all the three versions like string string buffer or string Builder so we are very well aware with the uh you see strings now so we also understood what we need to do in case we need to use the mutable sequences so all three they Implement car sequence it means the reference variable to the car sequence let’s say CS it is let’s say null so CS can point to a string let’s say hello CS can also o point to a string buffer let’s say awesome and CS can also point to a string Builder so that’s like bu so that’s like runtime polymorphism right so this is like runtime polymorphism inaction so this is what we got As in the strings where uh strings they are immutable if you want mutable versions you go with the buffer and the Builder guys we got more many more apis in the string string buffer and string Builder so Explore More from here what is an interface in simple words an interface can be defined as anything which shares a boundary between two components in case of computers it separates two systems and access a boundary which helps in data exchange now what is a Java interface a Java interface can be defined as an abstract type which stores the methods and helps other classes to implement the behavior of the methods which an interface actually stores now you might get a question we have interface for that yeah absolutely with this we begin our next question why we need interface we all know that Java supports inheritance but when it comes to multiple inheritance Java cannot support it it ends up facing ambiguity between two parent classes and fails to provide the required result this particular problem is called as Diamond problem here as you can see there is a super class and this super class is been inherited by two classes called as Class A and Class B now we are trying to inherit the properties of Class A and Class B into a new class which is Class C which practically seems impossible in terms of java now the question would be is it seriously impossible to do it that’s when the interface come to the picture using interface we can achieve multiple inheritance here we are inheriting one class and implementing the behavior of another class confused let me explain with a little example let us consider an airplane which requires both the properties of carrying huge cargo and passengers let us assume we have two planes one is capable only to carry passengers and the other one is capable only to carry cargo now we need to carry both passengers and Cargo in one single plane which seems to be impossible on the basis of how the Java works as it feels it cannot access the properties of two different parent classes at the same time but you can make it possible by making Java feel that it is inheriting one plane and implementing the methods present in the other one it is like building a commercial plane which takes both the passengers and cargo luggage interface is like making a bigger plane which could do both the tasks without interfering with the components of one another instead just borrowing the methods which are present in the interface class now let us get practical first let us understand what was the problem in multiple inheritance here I have defined the first class class A and then the next class which is Class B and finally the class C here I’m trying to inherit the properties of Class A and Class B together in the class C by using extend keyword as you can see the editor is throwing an error which says that it is not possible to inherit the properties of both the classes now let us find the solution for this the solution is none other than using an interface here in this solution I am creating an interface I’m having the same messages which I had in my earlier example both the messages present in class A and Class B and similarly I have also defined the interface which has both the methods hello and welcome now let us run this program and see how does it work as you can see it is accessing both the methods and printing the message present in both the classes Class A and Class B now let us try a different example in this example I am declaring four methods addition subtraction multiplication and division now let us enter into a class here I’ll be trying to access all the four methods and print the output now let us try to run this program and see how the output appears as you can see the program has been successfully compiled and now it is asking for two integer values to perform the first operation which is addition the output has been successfully generated and now it is asking for two more integer values to perform subtraction the difference is been displayed now it is asking for two more integer values for performing the multiplication operation the output is clear now let us perform our final operation which is division as you can see we have our result here now let us understand the interface nesting as you can see I have nested an interface by the name inner interface inside another interface which is the outer interface and then I’m trying to generate a Fibonacci series using the method which is present in the inner interface which is other than the inner method using this method we will be generating the Fibonacci series let’s try to run the program and see the output as you can see we have our FIB series printed here and this process was being executed from the nested inner interface method now let us try to see an example for nesting by nesting an interface inside a class here I have nested an interface called edureka interface in inside a public class which is edureka class and inside the edureka interface I have a method called nested method using which I’ll be performing a string reverse operation let us execute this program as you can see the string I have provided is edura and after the operation you can see the string has been successfully reversed now let us have a one short quick revision about how to declare an interface so this is the syntax for declaring an interface where you will be using an interface keyword followed by the name of your interface and inside the interface you can declare your methods by default all the methods which you declare in interface are considered to be public with this let us find out the few differences between class and an interface the first difference is multiple inheritance interface was designed to provide multiple inheritance where on the other hand classes cannot the next difference is data members interface does not have data members all it includes is methods which decrease the probability of confusion during the implementation process on the other hand classes include data members which mean to say that the user must be careful while using the data members to avoid ambiguity the next difference is Constructors interface does not have Constructors while on the other hand classes take up the advantage by including them which will help them to set the values to the members of an object and the next one is complete and incomplete members interfaces comprise of only methods which make them have only the signature methods in them while on the other hand classes include both data members which are also called as abstract members as well as methods which are known as signature members the next one is access modifiers interfaces does not have access modifiers by default interfaces take up public as their access modifiers whereas classes provide private access modifiers which are not available in the interface the next one is static members interface cannot have any static members whereas class has all its members as static with this let us get into the major advantages and disadvantages of interface first let us begin with advantages we can achieve multiple inheritance in Java we can easily break up complexity and enable clear dependency between the objects we can achieve Loosely coupled applications through an interface don’t just be on the bright side interfaces have some disadvantages as well Java interfaces make the application slower when compared to the competitors like python which support multiple inheritance the next one is Once An interface is included in an application it might be used once in a while or it might end up being used multiple times at a larger scale with this let us discuss about the key points about Java interfaces the first one is can we instantiate an interface well we cannot create an object of an interface hence we cannot provide instances in an interface the next one is abstraction the major key advantage of interface is abstraction because none of the methods declared in an interface have a body the next key point is implementing an interface the keyword Implement is used in a class to implement the methods of an interface the method in an interface must be provided with an access modifier as public by default the methods declared in an interface are also considered as public class must Implement all the methods declared in an interface or else it must be declared in an abstract class let us see an example about implementing an interface here I have defined an interface and declared two methods into the interface method one and Method two the first method is used to find out a square root of the given number and the second method is used to print a message now let us try to execute this program as you can see it is asking for an input now let us provide a number to find out its square root as you can see the square root of the given number is four now let us try to execute a different example where we’ll be implementing the methods from two different interfaces as you can see this is my first interface and here my first method is to find out whether a given number is an amstrong number or not and later let us see a second inter interace where I have declared a method to find out if the given number is prime number or not now let us try to execute this example and see if the program can Implement both the methods from two different interfaces or not as you can see the class edureka 2 has successfully implemented both the methods from interface one and interface 2 and displayed the output I have given three as the input for finding whether it is prime number or not and the result is it is a prime number similarly I have given 153 to find out if it is an Armstrong number or not and the program provided the output as it is an amstrong number with this let us continue with our key points the next one is access modifiers in an interface interface can be declared as private protected and transient all the interface methods by default are abstract and public variables declared in interface are public static and and final by default interface variables must be initialized at the time of the Declaration otherwise the compiler will throw an error inside any implementation class you cannot change the variables declared in an interface let us discuss each one of these points practically here I have defined an interface by name try here I’m trying to declare an integer type variable a using int a is equals to 10 which is valid and similarly you can do it by using an access modifier public which is same as the previous one and you can also declare this variable by using public access modifier and making it as static and final the variable can also be declared by using final keyword and also the static keyword all the above stand the same now let us see the next point which we discussed in our access modifiers we discussed that the variables which we declare in an interface must be assigned to a value here I’m trying to declare an integer type variable X without assigning it to any value now let us try to run this program and see if there is an output or not and I’m trying to access the same X here in the main class and let’s execute this program as you can see there is an error which means that we were supposed to assign a value to the variable which we declared in the interface with this let us move on to our next stage of key points the next one is extending an interface an interface can extend any number of interfaces but cannot Implement them whereas a class can Implement any number of interfaces if there are two or more same methods in different interfaces then the class can Implement all the interfaces but one single method is enough to perform the operation a class cannot Implement two interfaces that have methods with same name but different return return type the major advantage of using an interface is that variable name conflicts can be easily resolved by using the interface name let us see this practically as you can see here I’ve defined an interface a with the method display and similarly I have also defined an interface B with the same display method inside it now I’m trying to implement both the interfaces A and B in my class same and I’m trying to access the display method let us try to execute this program and see if this runs or not as you can see the program has been successfully compiled and the output has been generated which says displaying data now let us discuss the next Point here I’ve defined an interface a which has the variable X of integer data type storing the value thousand and similarly I have also defined another interface with name B which has the same variable x with storing different value now in my main program if I try to access the variable X then it might provide me an ambiguity but if I use the interface name then I can successfully access both the variables and display the data present in them without facing any of the ambiguity now let us execute this program and see the output as you can see the value of x in the first interface a was th000 which is displayed here and the value of x in the second interface which is 2,000 is also being displayed here I used the interface name a and interface name b in the print statement provided here a data structure is a way of storing and organizing the data in a computer so that it can be used efficiently it provides a means to manage large amounts of data efficiently and efficient data structures are key to designing efficient algorithms next we have two types of data structures that is linear and hierarchical so what is linear data structures linear data structures are those whose elements are sequential and ordered in a way so that there is only one first element and has only one next element there is only last element and has no previous element while all the other elements have a next and a previous element understood like you can have only first and the next element and there is only last element but has only one previous element so there cannot be any multiple previous elements or multiple next elements okay but all the other elements have a next and a previous element note that there is only one previous and next elements simple So based on these categories linear data structure are being divided into stack q and Link list now talking about the stack stack is an abstract data structure it is a collection of objects that are inserted and removed according to the last and first out principle that is Leo objects can be inserted into a stack at any point of time but only the most recently inserted that is the last object can be removed at any time so you can see here this is a bottom element and this is a top element when you push the element into the stack it goes into the bottom and the last element that is the top element can be popped out so once the top element is popped out the next element which is available in the stack can be popped out but the bottom element cannot be popped out first understood so this is how it works that is it is an ordered list in which insertion and deletion can be performed at only one end that is the top it is a recursive data structure with a pointer to its top element it supports two fundamental methods that is push that is you can insert the element to the top of the stack and pop remove and return the top element onto this stack so if I have to give you an example it can be reversing a word to check the correctness of a parenthesis sequence implementing back functionality in browsers and many more now let’s see a small example of Stack so I have created a class called stack and the maximum capacity of the stack is 1,000 and as I told we need an element called top right because it’s a main thing so that’s a reason and then I’m initializing the maximum size of Stack so there are two conditions first is empty so if the stack is empty then return top less than zero because there is no element in the top when stack itself is empty then there is nothing right that’s a reason and then I’m creating a Constructor for stack and initializing the top size to minus one because nothing is there next what I’m doing I’m pushing the element into the stack so if top is greater than equal to maximum size minus one then print stack Overflow return false else insert the element to the top of the stack and initialize it to the variable that is X which is this one next say that so this element which is the element that you have inserted into the stack is pushed into the stack okay then return then again I’m creating a method called pop that is removing the element out of the stack so if top is less than zero then say back underlow else int X is equal to delete one element from the stack that is a of top minus minus then return X again I’m creating one more method called Peak if top is less than zero then say stack underlow else return the element at the top of the stack and return send it to X that is the element which you have taken it over here simple now I’m writing a driver code that is the main method I’m initially izing a stack and creating a object of a new stack and sending elements push 10 push 20 and push 30 and then when all these elements are inserted into the stack if I want again I can you know say push 4 so when I use S do pop so what do you think will this element will be popped out first or this element obviously this element right so now let’s run and check for the output so you can see first 10 was pushed into the stack 20 was pushed 30 was pushed into the stack and then 40 but when I used s. pop the last element was popped out so if I don’t have this element I’ll just save this now see the last element which is 30 is popped out from the stack right so this is how you can execute your stack and these are the operations that is performed on a stack so this is how it works now talking about the next data structure that is q q is also another type of abstract data structure and like a stack the Q is a collection of objects that are inserted and removed according to First in first out principle that is elements can be inserted at any point of time but only the element that has been in the queue the longest can be removed at any time so you can see here it has two ends that is front end and back end that is the front front end and the rear end so if you insert an element it goes to the front and that can be popped out that is removed but in case of Stack it is last and first out in case of Q it is first and first out it supports two most fundamentals that is NQ and DQ NQ means you have to insert the element at e that is at the rare of the Q and DQ means remove and return the element from the front of the queue so whatever element you insert at the rare end will go to front as soon as you inserted more right so simple that can be taken off from the Q end so Q’s are used in the asynchronous transfer of data between two process that is CPU scheduling dis scheduling and other situations where resources are shared among the multiple users and served on first come first serve basis so these are some of the situations where Q can be used okay so now let’s take a an example and understand how it works so this is very simple I have created a class called q and I’m creating a string of Q and assigning it to a link list so what I’m doing is I’m using q. add and I’m adding all the four elements and then displaying the elements present in the Q so when I say q. remove of three it will display the elements present in the que and the Q size and says whether it contains the element two or not if yes it displays that let’s run and check the output so first when I print this it displays the size and let me tell you one thing this is a inbuilt function so that is the reason when I’m using add it is being added automatically so then what I did I removed the element three so you can see here I can remove any element it’s not that the element which is there at the last or the element that is there at the top or nothing like that you can just remove the element from any corner and then when I remove the element and I print the Q it says only the remaining elements that is 1 2 and four next Q size is Q do size that is three and then whether does it contain the element two in the Q yes true if I say element three in the que it should say false because I have popped it out right so let’s see what it says it says true because initially in the Q it was present so if I now say say element 5 then run so when I say Q do contains 5 it should say false because it’s not there in the list right see it’s telling false so this is how you can perform the operations on the Q the next data structure is link list a link list is a linear data structure with the collection of multiple nodes where each element stores its own data and a pointer to the location of the next element The Last Link in the link list points to null indicating the end of the chain element in the link list is called a node the first node is the head and the last node is a tail so there are three types of Link list one is singly link list that is unidirectional where it contains only the information of the next node so when it comes to W link list it contains the information of the next node also the pointer to a previous node and when it comes to Circular link list head points to a tail and the last node points to the first element of the first node that is the last element of the last node points to the first first element of the first note so if I have to tell an example so imagine a link list like a chain of paper clips and they link together you can easily add another paper clip to the top or bottom it’s even quick to insert one in the middle all you have to do is you have to just disconnect the chain at the middle add the new paper clip then reconnect the other half a link list is a similar way of doing all these operations let let’s take a small example and understand this in a better way so I have created a class called link list example and node head is a head of the list and I have created a class called Static node the inner class is made static so that main can access it that is the main method can access it so I have the data and the next node and the Constructor for the node is int D because data is equal to D and next should be assigned to null now the next step is to insert a new node so for that what I’m doing I’m creating a static method for linkless example and I’m inserting linkless example list and int data and I have to create a new node with the given data so what I’m doing I’m creating a new node with the data and assigning the next node to null because that is mandatory so if the link list is empty then make the new node as head so if link list is empty that is if list do head is equal to null then make the new node as head that is new node is equal to head head else Traverse till the last node that is node last is equal to list. head and then insert the new node again insert the new node at the last node and finally you have to return the list by head okay now this is a method to print the link list so current node is equal to list. head and the link list contains the elements that is being present in the current node and the list that is already being inserted so when I have to travel to the link list I’ll check whether current node is not equal to null if it is not equal to null then print the data at the current node using the statement or else go to the next node in the main method I’m creating a object of a new link list and I’m inserting the values into the list in sequence then finally I’m printing the list okay so now let’s run and check the output so see the elements are being inserted in the sequential order so this is how it works so this was all about the linear data structures now moving further we have hierarchical data structures which comprise of binary tree binary Heap and hashmap as well so binary tree is a hierarchical tree data structure in which each node has at most two children which are referred to as left child and the right child each binary tree has a group of nodes that is root node left sub tree and the right sub tree the root Noe is the topmost note and often referred to as main note because all the other nodes can be reached from the root and left sub tree and the right sub tree is also a binary tree and binary tree can be traversed in two ways that is depth first Travers veral that is in in order pre-order and post order and breadth first traversal that is level order traversal and the complexity is Big go of N and the maximum number of nodes at level L is 2 ra to the power L minus1 and binary search applications include it can be used in many search applications where data is constantly entering and leaving also as a workflow for compositing digital images for visual effects used in almost every high bandwidth router for storing router tables also used in Wireless networking and memory allocation also used in compression algorithms and many more so this is all about the binary tree now talking about the Heap it’s a complete binary tree which answers to the heat property in simple terms it is a variation of a binary tree with the property is like a tree is set to be complete if all its levels except the possibly the deepest are complete the property of the binary tree makes it suitable to be stored in an array it follows Heap property that is a binary Heap is either a Min Heap or Max Heap Min Heap is for every node in a heap node’s value is lesser than or equals to value of the children maximum binary Heap is for every node in a heap the noes value is greater than or equal to values of a children and popular applications of binary Heap include implementing efficient priority cues efficiently finding the K smallest elements in an array and many more the next concept is Hash tables imagine that you have an object and you want to assign a key to it to make searching very easy to store that key value pair you can use a simple array like a data structure where keys that is integers can be used directly as an index to store data values however in cases where the keys are too large and cannot be used directly as an index a technique called hashing is used in hashing the large keys are converted into small keys by using hash functions the values are then stored in a data structure called a hash table a hash table is a data structure that implements a dictionary ADP that is a structure that can map unique keys to values in general a hash table has two components one bucket array and the hash function a bucket array for a hash table is an array a of size n where each cell of a is thought of as a bucket that is the collection of key value pairs the integer n defines the capacity of the array next hash function it is any function that Maps each key K in our map to an integer in the range 0 comma n minus1 where n is the capacity of the bucket array for the table when we put objects into a hash table it is possible that different objects might have the same hash code and this concept is called as Collision to deal with a collision there are techniques like chining and open addressing so these are some of the most Basics and frequently used data structures in Java now that you are aware of these you can start implementing them in your Java programs so I hope you understood the concept of linear and hierarchical data structures what is link list a link list is considered as a data structure similar to any other data structure like arrays stacks and cubes the link List have three major parts head tail and node every node in the link list is interconnected using the address of the next node before we get started with the link list let us understand the terminology of array before using an array we actually reserve the memory blocks in the memory to store the data in order to process them for example I have reserved an array of integer data type and I’ll be storing five elements into it the name of my array is my array and the addresses for the array are 0 1 1 2 3 and 4 so now let us try to add the elements into my array the first element is 10 as you can see the first element is stored in the index zero of my array similarly I’ll try to add four more elements into my array which are 2030 40 and 50 as you can see the data is been successfully inserted and the insertion order is been secured each and every element is been inserted into the array in a sequential order and now we can access them using their index numbers but in case of Link list this doesn’t happen unlike arrays they do not work with the completely reserved sequential collection of memory instead they choose the random blocks from the Heap and store the data into it and provide access to the data whenever needed the best part is once the use of Link list is done and if you won’t need it then you can actually dump the memory blocks back into the memory Heap which makes them reusable once you provide the data into the link list it will borrow the particular number of memory blocks from the Heap based on the data typee you provide for example two or four bytes for each block of an integer data type and four bytes for each block of a float data type and 16 bytes of data for each block of double data type and so on each block it selects will have a memory address along with it and a space for data to be stored once the data is stored then the last memory block will replace the address with a null value which indicates the end of the link list using the interconnection between the notes the link list behaves like an array and displays all the data in the form of a sequence now that we have understood what exactly a link list is let us discuss about the types of Link lists the link lists are majorly divided into three types the singly link list the doubly link list and the circular link list a singly link list is a standard link list which mainly consist of two Fields the address space to store the address of the next node and the blog for storing the data as you can see this particular node is the head node and this particular node is the tail node this is the block which stores the address of the upcoming node and this block stores the data we can Traverse in one single Direction in a singly link list the next one is the W link list the W link list is completely similar to a singly link list but the only difference is that the nodes in the W link List have three Fields namely the address note for the next upcoming note the memory block to store the data and finally the block which stores the address of the previous node as you can see this particular Noe is the head node this particular note is the tail Noe and these notes are the intermediate notes which are lying in between the head node and the tail node as you can see this particular block of this node is pointing to its previous node and this particular block of this node is pointing to the upcoming node and this particular block is designed to store the data which you provide into it this makes the dou link list Traverse in both the directions now let us move into circular link list the circular link list is a singly link list but the only difference is that the final note address block is not ended with a null value instead it points to the address of the head node as you can see in this particular link list the address of the first block is pointing to the next one and the next to the next one followed by which we will reach the tail node in the tail node the address here is not null instead it is pointing to the address of the head node that’s what it makes as a circular link list now let us discuss some important features of Link list the important features of Link list are first one is q and DQ interface the link list implements q and DQ interface therefore it can also be used as a q DQ or a stack the next one is it can contain all the elements including duplicates and null the the thirdd one is link list maintain insertion order of elements the next one is Java link list is not synchronized that means in a multi3 environment you must synchronize concurrent modifications to the link list externally we can use collections. synchronized list to get synchronized link list link list class does not Implement Random Access interface so we can access elements in a sequential order only we can use list iterator to iterate the elements through the list now that we have understood the features of the link list let us move into the methods that we can use in the link list there are more than 40 methods that we can apply in link list but here to save time let us discuss the crucial methods required to actually work with link list here as you can see I’ve used the link list method which is provided in Java and I’m creating a link list and then I’m trying to add the string type values into my link list using the link. add method and find finally we shall also use collection method which is previously described in Java to add few more elements which are of string type into our link list and try to append them in the tail section of the link list let us try to execute this program and see how does it work as you can see the output is been printed here the first data which we tried to insert into our link list was welcome to edureka and after that we tried to append the data of string type into the end part of our link list which happens to be the tail and the link list after appending the string data type at the last is welcome to Eda an online technology training center now let us try to insert the data at the head part of the link list so in this particular program I’m making use of the link list method which is previously described in Java and I’m adding the elements welcome and Eda which are string data type into the link list and in the next section I’m using collection method and I’m adding few more elements into the link list at the head section of the link list now let us try to execute this program and see how does it work as you can see the output has been successfully generated and the data of the link list before appending the data to the Head section was welcome urea and after appending the data to the Head section we have welcome to the most popular online technology training center edureka now let us execute add method in this particular method we are just appending new elements into the link list similar to the previous methods I have created a link list using the link list method which is previously programmed in Java and I’m trying to add up the elements into it as you can see in in this first section I’m having few elements called hello world message from Eda and after that in the second section I’m trying to add two new elements which are new and element let us try to execute this program and see how does it work as you can see the output has been successfully generated and the link list before appending the new element to it is Hello World message from urea and after appending the new element we we have Hello World message from edureka and the new elements which are new and element now let us try to append the data using add method by using the index followed in the link list as you can see in this particular example I’m trying to add two new elements which are U and welcome at the index locations 2 and four respectively now let us try to execute this program and see how does it work as you can see the output has been successfully generated and the output before adding two new elements are how are question mark to edura here I’m adding you and welcome into this particular link list in a designated location which is 2 and four so after adding two new elements this particular link list is making a sensible statement which is how are you question mark and welcome to Atura now let us try to execute clear method as you can see in this particular example I have created a link list and I have also added some elements into the link list which is edura online training institute after that I’ll be clearing the link list using the command list. clear once after I clear the list the link list becomes completely empty after that I’ll be using the add method again to add up new elements into the link list so now here the link list will be completely erased in the first half and after that once if I try to insert new elements into it then it will take up the new elements and add them into the previously existing blocks without having the previous data in the link list now let us try to execute this program and see how does it work and understand it in in a better way as you can see the data has been successfully generated and the data which was present in the link list before clearing was edura online training institute once after the data has been cleared successfully the new elements are been added into the link list which are now tied up with nit War Angle now let us try to execute clone method in this particular example I’ll be using clone method the Clone method is nothing but you cloning the existing link list now let us try to execute this program and understand this in a better way as you can see the first link list is example for clone method I’m using clone method and I’m trying to duplicate the first link list which has the same data as you can see which is example for clone method now let us try to execute index method as you can see in this particular example I’m using index of method so here I have inserted some data into my link list which is using index off method so what I’ll do here is I’ll be using list. index of method to find out the index of a particular element so here I’ve chosen using element and Method element to find out the index of those particular elements let us try to execute this program and see how does it work as you can see the output has been successfully generated and the link list was using index of method now the index of the element called using is zero and the index of the element method is index 3 now let us execute offer method as you can see in this particular method I have created a link list and added the elements BMW Posh and Mercedes and I’m using offer last method to add the final element which is Jaguar to the link list so let us try to execute this program and see how does it work as you can see the output has been successfully generated and the elements in the link list before using offer last where BMW POS and Mercedes and the elements after executing the offer last method is BMW Posh Mercedes and jaguar where the element Jaguar is included into the link list at the last section which happens to be the tail now let us execute offer first method in this particular example I’m creating a link list which will be having the elements C language Java and cin and finally I’ll be using the offer first method where I’ll be including the python element in the head section of the link list now let us execute this program and see how does it work as you can see the python element is included here at the head section now now let us try to execute pop method in this particular example I have pushed in two elements which is a and b and here I’ll be using the pop method to pop the last element which is pushed into the stack and after that I’ll try to push a new element which is C into the stack and finally we’ll print the stack which is existing right now let us try to execute this program as you can see the last element which was pushed into the stack was B and after popping it we have the elements C and A which are existing in the current stack now let us try to execute the push example as you can see this particular example is similar to the previous one here we are just pushing the elements into the stack using the stack push method as you can see the output has been successfully generated and the elements which we have pushed into the stack are 100 200 and 300 now let us try to execute a remove method as you can see in this particular example I’m trying to insert four elements into the list which are apple banana and grape and here I’m using list. remove method to remove one element from the link list which is the first element which happens to be apple now let us try to execute this program and see how does it work as you can see the elements before removing the element Apple are apple banana grape and pineapple so once once after I remove the first element the remaining elements are banana grape and pineapple now let us try to execute the set method in this particular example I’ll be using list. set method here I’m trying to set two elements into the link list which are kiwi and orange at the position two and three as you can see this is the element kiwi and this is the element orange and I’m trying to set Ki into the position number two and orange into the position number three let us try to execute this program to understand this in a better way as you can see the output has been successfully generated and the elements before inserting them into the second and third position are apple banana grape and pineapple the objects grape and pineapple which were at the positions 2 and three are replaced with kiwi and orange now let us try to understand size method size method is not a complicated Method All it does is shows the number of elements which are present in an array now let us try to execute this program and find out the size of the particular link list as you can see I’m using list. size over here and I’ll be finding out the size of this particular link list now let us try to execute this program as you can see the link list is apple banana grape and pineapple and the size of this particular link list is four now let us try to convert an array into the link list as you can see in this particular example I’m trying to add the array which is courses which has Java PHP Hardo devops and python elements into a link list so here I’m using for Loop into which I’ll be adding the string s Elements which are courses into the link list which is a course list using the add method now let us try to execute this program and see how does it work

    as you can see the elements Java PHP Hadoop devops and python were actually the elements of an array called courses and using the add method we have added the elements of an array into the course list which happens to be the link list and here the output has been printed successfully which happens to be the output of a link list now let us try to convert a link list into an array in this particular example I’ve used add method to add the Java python devops Hardo and AWS elements into a link list called as course list now we’ll be using to array method to add all the elements which are present in a link list into an array now let us try to execute this program and understand this in a better way as you can see the size of the link list was five the elements of the link list were Java python Hadoop devops and AWS which are now included into the array called as numbers which which is displayed as follows Java Python devops hadu and AWS so these are the elements which are present in the array called as numbers so we have successfully converted a link list into an array now let us discuss the major differences between arrays and Link lists the arrays are not resizable because the size of the array has been defined at the Declaration section itself but on the other hand link lists are dynamically resizable the next difference is the ARs offer more methods compared to link list while the link list are concise to few methods compared to arrays the third difference is the arrays have insertion addition and removal operations done in a faster way while in link list you have to Traverse from head to tail the random axis is not provided by link list so these operations are comparatively slow in link lists the last difference is the AR consume more memory because hardly the aray memory which you allocate is been reused but in terms of Link list the memory which you use can be dumped back into the Heap and it is readily available for reuse so Aries consume more memory and the linkless consume less memory let’s understand what is a hashmap in Java hashmap is a part of Java’s collection since Java version 1.2 it provides the basic implementation of map interface in Java it stores the data in key value pairs to access a value one must know its key hash map is known as hashmap because it uses a technique called hashing so what is hashing it is a technique of converting a large string to a small string that represents the same string a shorter value helps in indexing and faster searches hash set also uses hash map internally it internally uses a link list to store key value pairs so the important features of hashmap are it is a part of java util package it extends an abstract class that is abstract map which also provides an incomplete implementation of map interface hashmap also implements clonable and serializable interface it does not allow duplicate keys but it allows duplicate values that means a single key cannot contain more than one value but more than one key can contain a single value hashmap allows null key also but only once and multiple null values and this class makes no guarantees as to the order of the map in particular it does not guarantee that the order will remain constant over time it is roughly similar to hashtable but is unsynchronized so these are the various features that makes it the popularly used data structure next talking about the internal structure of hashmap it contains an array of node and node is represented as a class which contains four fields that is inh K key V value and node next next it can be seen that node is containing a reference of its own object so that is the reason it is called a link list so very simple it compris of a node which compris of a key and value and it has int hash and node is having the reference of the next variable as well so this is all about the internal structure of hashmap now talking about the performance of hash map it mainly depends on two parameters that is initial capacity and the load Factor so capacity is the number of buckets where the initial capacity is the capacity of the hashmap instance when it is created the load factor is a measure that when rehashing should be done and rehashing is a process of increasing the capacity in hashmap capacity is multiplied by two and load factor is also a measure that what fraction of the hash map is allowed to fill before rehashing ing when the number of entries in the hash map increases the product of current capacity and the load factor is also increased that is it implies rehashing is done if the initial capacity is kept higher then rehashing will never be done but by keeping it higher it increases the time complexity of iteration so it should be chosen very cleverly to increase the performance the expected number of Valu should be taken into account to set the initial capacity most generally preferred load Factor value is 75 which provides a good deal between the time and space cost and the load factors value varies between 0o and one based on these two factors that is initial capacity and a load Factor performance of a hash map is measured now let’s move into the next section and understand what is a synchronized hashmap as it is already told that hashmap is unsynchronized that is multiple threats can access it simultaneously if multiple threads access this class simultaneously and at least one thread manipulates it structurally then it is necessary to make it synchronized externally it is done by synchronizing some object which encapsulates the map if no such object exist then it can be wrapped around collection synchronized map to make hash map synchronized and avoid accidental unsynchronized access so you can see that I have used collections. synchronized map and created a new hash map so by using this a map m is synchronized iterators of this class are fail fast if any structure modification is done after the creation of iterator in any way except through the iterators remove method in a failure of a iterator it will throw concurrent modification exception so this is how you can make a map as synchronized now let’s see some of the constructors that are widely being used hashmap provides four Constructors and access modifiers of each one of them is public first one hashmap it is a default Constructor which creates an instance of a hash map with initial capacity 16 and load Factor 75 next hash map with in initial capacity this also creates a hashmap instance with specified initial capacity and a load Factor 75 next hashmap with in initial capacity and Float load Factor it creates a hashmap instance with specified initial capacity and a specified load Factor next one that is a last Constructor hash map which has arguments of type map it creates instance of hash map with same mappings as a specified map so now let’s write a small program and understand how does do the hashmap work so I have created a class called hashmap and inside that I have a main method and you can see I’m using hash map and I’m passing the parameters like string and integer and I’m mapping it with the object of a new hash map so first when I print the map it should say this map is empty because nothing is there in the map right so then I’m using the put method to insert the elements into the map that is ABC 10 m 30 and XY 20 then the when I print this it will say the size of the map that is three then next I will check whether a map contains a key called ABC so this is the keys and this is the value of the respective key right so when I check if it has a key called ABC then I’m using a map dog to display the value of ABC so the value for key ABC will be whatever is present in this right then again I’m clearing the map and again printing the map now I’m using a method called print I’m passing the arguments for map means it should contain the map of same mappings so if it is empty then print map is empty else return the elements and that is the key value pairs present in the map so let’s run and check the output so first what it said it said map is empty because I’m PR printing the map without entering anything in that so it will go to the print method and check whether the map is empty or not yes it is empty so it will retrieve the result so next this statement got executed and it’s telling the size of the map his three because it has the key value for three different categories again it will print the map so this will again go to the function definition and print this statement because now the map is not empty so there’s a function call over here and now size of the map is map do size what is the size three so it is displaying the size of the map as three and is printing all these elements now value for key ABC is 10 so that’s what I’m checking over here that is get the key for ABC and print its value so if I do it again like you know m n o again change it over here as well and and here as well okay so it will print the value will be 30 so finally after clearing the map again it’s telling map is empty now let’s run and check the output it’s MN o you can see that the value for the key m o is 30 right I hope you understand this so this is how you can configure your hashmap and map it accordingly so now talking about the complexity of hashmap it provides a constant time complexity for basic operations that is get and put if hash function is properly written and it disperses the elements properly among the buckets iteration of hashmap depends on the capacity of hashmap and the number of key value pairs basically it is directly proportional to the capacity Plus site and capacity is the number of buckets in the hashmap so it is not a good idea to keep a higher number of buckets in hashmap initi so this is all about the time complexity now let’s have a look at the various methods that are widely being used in a hash map first void clear this is used to remove all the mappings from a map next Boolean contains key that is parameter will be object key this is used to return true if for a specified key key mapping is present in the map and again Boolean contains value of object value this is used to return true if one or more key is mapped to a specified value next method is object clone this is used to return a shallow copy of the object of the mentioned hashmap next Boolean is empty used to check whether the map is empty returns to if it is empty next object get object key this is used to retrieve or fetch the value mapped by a particular key set key set this is used to return a set views of the key in size used to return the size of the map next object put parameters will be key and value this is used to return a particular mapping of key value pair into a map next put all of map M this is used to copy all of the elements from one map to other next object remove object key this is used to remove the values for any particular key in the map and the last one is collection values this is used to return a collection view of the values in the hashmap so these are the various methods that are widely being used in the hashmap let’s understand what is generics in Java generic is a term that denotes a set of language features that are related to the definition and the use of generic types and methods Java generic methods differ from regular data types and methods so before generics we use the collections to store any type of objects it can be either a generic or non-generic object now generics Force the Java programmer to store a specific types of objects so basically this is all about what is gener now let’s move further and see why do you need Java generics if you look at the Java Collections framework then you will observe that most of the classes take parameter or argument of type object so basically what happens in this form they can take any Java type as argument and return the same object or argument it can be either a homogeneous or heterogeneous that is not of a similar type so sometimes in the Java application the data type of the input is not fixed the input can be an integer a float or a Java string in order to assign the input to the variable of the right data type prior checks had to be conducted in the traditional approach after taking the input the data type of the input was checked and then it was assigned to the variable of the right data type when this logic was used the length of the code and execution time was increased So to avoid this genics were introduced so on using generic the parameters in the code is checked at compile time automatically and it sets the data type by default so this is where you need the concept of generics in Java as the execution time and the time that you invest in writing the code will also be decreased so now that you know what is gener in Java and why do you need it let’s move further and see some of the types of gener so basically there are four types first generic type class and you have interface method and Constructor first let’s understand what is generic type class a class is set to be generic if it declares one or more types of variables so these variable types are known as the parameters of the Java class let’s understand this with the help of an example so here you can see I have created a class with one property X and the type of the property is object correct so what happens once you initialize the class with a certain type the class should be used with that particular type only for example if you want one instance of a class to hold the value of type string then programmer should set and get only string type since I have declared the property type to object there is no way to enforce this restriction a programmer can set any object and expect any return value from the get method since all Java types are subtypes of object class so it’s very simple right so here I’m creating a method for set and get and I am using the this keyword for reference and then when I return the value of the X it can be any type but all the Java types are subtypes of object class so I can set a property for integer and can return string anything it can be so this is how it worked the next type is generic type interface an interface in Java refers to the abstract data types they are allow Java Collections to be manipulated independently from the details of the representation also they form a hierarchy in objectoriented programming languages so let’s take an example and understand this so here I have created a interface for gener and I’m doing two operations for T1 and T2 so for T2 what I’m doing I’m performing the execution I’m passing two variables that is T1 and X and next what I am doing I’m performing a reverse execution of whatever I have performed in the above statement so when I create a class for generic and implement the interface whatever I perform the execution will be reverse in the next execution suppose say while performing the execution and passing a string variable and that can be easily converted to a integer variable when I’m reversing the execution so basically all that matters is the type of the object and there is no way that I have to enforce a restriction or anything like that it can be a string integer double float anything so I hope hope he was able to understand how genri can be applied to interfaces now let’s see what’s next the next type is generic type method so generic methods are much similar to generic classes but they differ from each other in only one aspect that is the scope or type of information is available inside the method only generic methods introduce their own type parameters so let’s take an example and understand this so in this case what happens if you pass a list of string to search in the method it will work fine but if you try to find a number in the list of a string it will give compile time error yes right because see first I’m using Advanced for Loop I’m trying to check the element present in the list if the list is an string then it will match because always list is a string like list can be a string it can’t be a integer so when I try to find a number in this list it will give error right so that’s how I have coded this program and that’s how the generic type method tells you that is they introduce their own type parameters there is no way that I have to define something or user have to define something there’s nothing like that it’s like they Define their own type of parameters so this analogy is similar for Constructor as well so if I talk about the generic type Constructors the same goes here as well so basically a Constructor is a block of code that initializes the newly created object a Constructor resembles an instance method in Java but it is not a method as it does not have a return type the Constructor has the same name as the class and looks like how I have written in the code so here in this example Dimension class Constructor has a type information as you can see that so basically you can have an instance of Dimension with all the attributes of a single type only for example you have a class Dimension that is of a type T and I have created three variables when I create a Constructor for all these three values you will get the length width and a height by using the this reference because I’m giving this this do length is equal to length this do width is equal to width and this do height is equal to height so you cannot get any other parameters apart from this in this regard that is you can have an instance of Dimension with all attributes of a single type there won’t be any different types over here so this is how you can use type Constructors so now let’s see a small example of generic and understand how actually it works so here I have created a class called test one and I have passed two Vari that is T and U T is a type of an object o1 and U is a type of an object O2 o1 and O2 are object of type T and U correct so now for this I’m creating a Constructor and then I’m giving this reference that is this do object 1 is equal to o1 and this do object two that is O2 is equal to O2 and now I want to print the objects of T and U so I’m basically creating a method called print and then I’m passing these two variables in this and after that I’m creating a class called generic and inside the main method for the test one for object T and U one will be the string that I will be passing and the other one will be integer so you can see here that I have not created any specific integer or string variable instead I’m just passing the type of an object that is T and U to be a string and an integer correct there’s no restriction or I don’t have to enforce anything over here so I’m going to create a new object for that that is test even and pass the variables as adua and integer value will be 10 so when I give object do print this object is nothing but this reference it will call the method or the object from this print so what will happen it will display the elements present in the o1 and O2 so the elements present in o1 and O2 is nothing but the edua and 10 so when I execute this let’s see what happens I’ll run this as a Java application and let’s see so you can see here that in the output screen it set edura and 10 which means there is no type restriction over here it’s very simple as you saw all that refers to is a type of the object like all the Java types are subtypes of object class and that is the reason I’ve taken object class and referred all the elements as objects and then pass whatever I wish to that is a string and an integer and then I print it so this is how it works now let’s see what is generic functions so we can also write generic functions that can be called with different types of arguments based on the type of the arguments passed to the generic method and further compiler handles each of these methods so let’s see how it works so I have a class called test in this I have created a method that is generic display and pass the element as St element okay so now I’ve have made this as static and I’m using the generic type t Okay so next when I’m giving system.out.print Ln element. getet class. getet name plus element okay so you can see here that in one single print statement I’m trying to get the class get the name and also the element so let’s see how this one single line of code works so inside the main method I’m calling generic method with in argument okay so generic display is nothing but this method right so the T element that is the type of element is integer so it is 3 4 5 6 correct so next I’m again calling the generic method with string argument that is I’m calling the method that I’ve created above and I’m passing the element of type t as a string and after that we’re double so you can see here that there are three different types of elements that is integer string and double and all these are of different data types right so when I say get class. get name plus element it will say the class is this and the name will be the integer type and the element will be the value yes let’s execute and then you will understand what actually that statement does as I told you element. getet class. get name is equal to element right so element is Java do Lang is a type of the class do integer is a type of the name first one is integer so element. getet class. get name is equal to this value so same goes for next also element that is Java do Lang is the get class do string is get name and Eda is a value same goes with double as well so you can see here multiple types of arguments was being passed at one single instance so this is how the generic function works as you can pass n number of arguments by just referring to it as a type T there is no specification there is no restriction that you have to enfor it on all that you have to do is create a object of a type generic and then go on adding the values simple yes that’s how generic works now let’s move into the last part of the session and understand some of the advantages of genri and Java first code reusability you can compose a strategy or a class or an interface once and use for any type or any way that you need next type safety as you just saw that whenever you use different types of arguments and when you casted in different types of arguments it was very safe right there was no hampering of the code or there was no destruction of the code or there was no any type issues when you try to cast the code or when you use various types of code there was no hampering between those codes so obviously it this type safety individual typ casting is not required basically whenever you recover information from array list every time you need to typ cast it but T casting at each recovery task is a major migraine so in order to eradicate that approach genics were introduced as you just saw you can use various data types and there is no casting of that required because you can use all of them at once and all that refers to as an object so that’s why I think type casting is not required next implementing a non-generic algorithm it can calculate the algorithm that works on various sort of items that are type safe as well it can be a generic or non- generate no matter what it will Implement everything let’s understand what is file handling in Java so file handling implies how to read from a file and how to write to a file in Java and Java basically provides the basic input output package for reading and writing streams and also java. inputoutput package allows you to do all the input and output tasks in Java so in order to use a file class you need to create an object of the class and specify the file name or directory name as shown below so first you will write import java.io file that is used to import the file class and then you have to create the object of a file and specify the file name simple so let me tell tell you one thing Java uses the concept of stream to make input and output operations on a file so let’s Now understand what is stream in Java so the stream is a sequence of data it can be of two types bite stream and character stream now talking about the bite stream it mainly incorporates with bite data when an input and output process happens with a bite data then it is called the file handling process with bite stream now talking about the character stream it it is a stream which incorporates with characters when an input and output process happens with a character then it is called as the file handling process with bite stream so these are the two types of streams that are available now let’s move further and have a look at the various file methods that are useful to perform Java file operations first can read this method is used to test whether the file is readable or not next can write this method test whether the file is writable or not and next you have a create new file which creates an empty file and next delete this command is used to delete the file exist this test whether the file exist or not and next you have get name which is used to return the name of the file and you have get absolute path and this is used to return the absolute path name of the file and next you have length and it Returns the size of the file in bytes now moving further you you have list this method is used to return the array of the file in a directory and you have mkdir which is used to create a directory okay now these methods are used to perform various file operations now let’s see what are the various file operations that are present in Java so first you need to create a file then once you create a file you need to get the information out of the file after that you have to write the information to the file and then you have to read the data from the file correct so now let’s understand all these things in a much better way with the help of an example first create a file in this case in order to create a file you can use a create new file method okay and this method returns true if the file was successfully created and it returns false if the file already exist okay so here is an example for creating a file so first I have created a package and inside that I have a class called create file as I have already told you I need to import the file class so that is the reason I’m using this package okay and next in order to import the input output exception class to handle the errors I have java. input output. iio exception okay so next after that I have created a class called create file and inside the main method I’m using two blocks that is try and catch so inside the triy block what I’ll do I’ll write a code that has to execute and the catch block so if there is any error that is going to occur in Tri block it will be handled and in this case most expected error can be the io exception so that is the reason I’m using a catch block to handle that okay so inside the tri block let’s see what I have written so I have written file my object is equal to I’m creating a new file in the specified directory if I don’t give the path if I just give the name of the file that is file f.txt it will by default go go and store this file in the location where my Eclipse workspace is so I don’t want to do that I want to create a file in a specified file location and that’s a reason I’m giving this and now if my obj that is my object do create new file then if the file is being created with this object then it is telling file created and get the object name that is get name so get name will be what file F not txt right else if the file already exist it will say file already exists and if there is any exception it will be handled in the catch block so now let’s run and check the output so you can see that it’s telling file created and it returned the name of the file that is my obj doget name that is file fn. txt correct so yes that’s how it works now let’s cross verify this I’ll go to my D drive I will go to file handling and you can see and you can see file f created correct so in this location itself I have created the file so if I run this program one more times let’s see what happens so it’s telling file already exist because one time you created a file it will be present in that particular location so it will say file already exist cor right so this is how you need to create a file so the next step is to get the file information so here again I’m importing the file class and then I’m creating a class called file information and inside the main method I’m creating a new file okay and I will check if this already exists then it should print the file name get file name that is my obj doget name and then it should again print the absolute path of the file and for that I’m using get absolute path method and then I’m using if it is writable it will print can write if the file is readable it will say can read and the file size and bytes will be my obj do length Okay else if the file does not exist then it will print file does not exist so you can see that I have used all the methods that I have explained you before that is get name get absolute path can read write and length right so let’s run the program and check for the output so you can see that the file name is file 1.txt the absolute path is it’s in this location that I have already showed you just now for writable and readable it’s telling true because yeah it is readable and writable and the file size in bytes is zero so I have one more file here let me show you that I have a file called new file 1. text okay so inside that I have written some text so it means it consists of a text right so when I say the file size in bite you has to return the length but here it is telling zero because I have not written anything into that file so now if I change the file name let’s see what it will return for the statement let me run and check it once again so you can see that it return the file name absolute path it is readable and writable and the file size in bytes is 52 correct so if you have written anything in the file then it will on the file size or else it will not simple so this is how you need to get the file information next let’s see how to write to a file so here I have created a class called Write to file and inside the main method again I have two blogs that is try and catch and here I’m using the my writer method so here I have used the file writer class together with its right method to write some text into the file let’s Now understand how actually works so I have used a file writer and I’ve created a object of the writer and this is a path where I have saved my file and this is where I want to write some data into the file right then I’m using my writer’s write method to write this particular context in the file and after that I have to close it so once I close this I will say successfully rot to the file okay if the data has been written into the file then it will say I have successfully written the data into the file else it will throw an error and will be handled in the catch block let’s now run and check the output so it’s turning successfully wrot to the file now let’s cross check this so you can see that it has written the data into the file that is Java is a prominent programming language of the Millennium if you want to do any editing over here you can do which means is writable and if I want to read the data from the file I can read it as well right correct see so simple it will even ask whether to save or not if I say save yes it will get saved very simple right so that’s how you need to write a data to the file now that you have written the data to the file you know that you can go to the particular file location and check whether the data is been written into the file or not but how does Java know that right so now let’s write a Java program to read the data that you have written into the file again I’ll create a class called read from file and inside the main method I will write file my opj is equal to new file and this is the path of my file and then I’m using scanner and my reader by because I want to read it that is a reason and I’ll pass the parameter as my obj my obj refers to the file which is this one right and next while my reader do has next line so if it has next line or if there is n number of data that is being present in that it will read everything that is the reason I want to check whether it has a next line ifs again string data is equal to my reader. next line and it will print the data and after everything it says my reader. close because I have to close this and finally if the file has not found then it will throw an error and will be handled in the catch block simple now let’s run and check the output so you can see that it return Java is a prominent programming language of the Millennium which I had written from this thing right so from the right method and this I manually type so it will again print the data that has been present so this is how you need to read the data from the file I hope you understood how to create a file how to get the information from the file how to write to a file and how to read from a file so these are the various file operations that you can perform on a file so that’s how it works and that was all about the file operations what is a Java thread so guys a Java thread is a lightweight subprocess now in an application so we have one main thread so when our application is uh running so operating system is going to create one process so same way over here Java virtual machine will take care of your Java applications so process proc would be created and each and every process will have a main thread so thread is a lightweight subprocess so here it is the smallest independent unit of a program it contains a separate path of execution and every Java program will have at least one thread that is something known as the main thread so main is nothing it’s an execution context where the certain jobs will be executed one after the other in a sequence now if you want to create a thread in Java so we got this thread API from the java. Lang package itself you need not to even import it so it’s by default in the Lang package once we create a thread it will have a life cycle so how it’s going to work right so a thread can lie only in one of the shown States at any point of time so typically guys we’ll have a thread with a state called new so when you create a thread its state is New then we move into the runnable then into the running and finally the thread will be terminated in between a thread can have the waiting state which can uh iterate between your runnable and running so let us have a look onto uh individual states what exactly is what state so having a new state means that we are going to initiate a new object of a thread you can even say that the thread is just born right it’s just like creating an object of a thread in the memory thereafter once a thread is created we start the thread so once we start the thread the state is changed to the runnable state right so that it can run and finally your thread is now running so running means it is executing a run method which is the method we have to override from the thread class right and we even have the yield method that can send them to go back to the runable state again what is baiting State when a thread enters a state of inactivity so thread is uh not performing any action it is waiting for some other thread to give back the data or it is sleeping or it is blocked at certain scenario or a use case so that is known as a waiting State your thread is not currently resuming the tasks finally the thread is terminated so when your thread has completed its task right so it is terminated now let us take one example of this thread consider that you are going to play one audio file in a media player right so let’s say you have a media player and you’re going to play an audio file now the moment you tap on the button to play that audio in your phone or in your PC right so a new thread is created and you see that fin the thread starts proceeding so your song starts to play so from the runnable it enters into the running State and it keeps on running till the song is not finished right so that’s like the terminated so in between you just go for the pause right that’s like where your thread is now doing a weight operation so when your song is automatically finished or you stop the song that is the terminated state so one of one of the just an analogy that how the thread is going to work for us same way there can be a use case that you want to download some image from the server now threads are typically used when we have to perform a long running operation right so there we create this thread downloading an image can be a long running operation because it is dependent on the network speed now when you want to download an image so you create a new thread so in the background what we will do is we’ll start fetching the bytes from the server for the image right and uh in the running State your thread is continuously fetching the data there can be a state called waiting let’s say network connection has been disconnected so our thread can wait until the network connection is you know reestablished and terminated would be a state when the image is properly downloaded so couple of examples demonstrating how life cycle of the thread is supposed to be so now we will look into how we can create a thread so guys if you want to create create a thread right you need to understand the reason why you want to create a thread so we by default will have a main thread in our application that is represented by the main method so what is a main thread right so typically whenever you run your Java application or any application you will write your code in the main method now the code in the main method is executed as a main thread itself right so main method will have the instructions written within it and all those instructions are being executed as a part of the main thread in a sequence one after the other now what will happen if you are going to do a long running operation within the main itself it can take time right so the below written instructions in the main method they will be blocked because of a long running job right now that is where your operating system it will start giving messages to the user that this application is not responding would you like to wait or kill this application so this is what we need to understand right so when we have long running operations we need not to put the load on the main method or the main thread we need to create a separate thread so that is what we going to understand now so creating a thread is like what now we have two different ways by which we can create the thread either we extend from the thread or we can implement the runnable interface right so guys having a thread class so we’ll we’ll just say extends thread any class name extends thread you overwrite the run method you create the object of your thread class and we invoke the start method which will internally execute the run method same way so here you can see a bit of code snippet coming in so there can be a class called my thread extending the thread we have a run method which will do some job and in the main method you create the object of the thread and you just say start so start method will internally execute the run method the way we got thread class in a similar way we do have something known as runnable now many of times uh we are already into inheritance right so let’s say your class is inheriting some other class now it cannot inherit thread at the same time because multiple inheritance is not supported in Java so what we got we got runable interface so if you are already extending some class you cannot extend the thread class but we got a runnable interface which can be implemented rest of the structure Remains the Same right so you create you override the run method create the object of the class and invoke the start method so guys here we go right so your thread class will Implement runnable so let’s now do a little bit of coding here and understand that how it’s going to work for us right so I’m going to write a new Java project we’ll see how we can create threads using uh the thread API and the rable interface so I’m going to see threads demo let’s see next and say finish so we got a small Java project created here in the SRC I’m going to write a new class and I’m going to say threads with the main method or I will say this as app with the main method right so app means application Here app with the main method now when we have this uh main method coming in so guys uh we will come here and say that main method represents main thread right so main method represents main thread so whatever we write in here will be executed by main thread and threads always execute the jobs in a sequence so whatever the job you going to give to the thread they’re going to execute in a sequence for example I will write down one of the job it goes like application started and thereafter I can have a job called application finished so in between I can have let’s say a small job it will print some documents for me right so I’m going to say that for INT of let’s say document one till the document number 10 and document plus plus so I’m printing some documents right so let’s say this will be some code snippet right so some code to print the documents right so this guy is printing some documents ments for us so I will write down the ciso statement here so printing Document Plus the doc right so whatever the document we are printing so I’m just putting up here now when I will run this program it is all ceso statements it’s nothing complicated to understand I hope so so your application started we printed the document one till the document number 10 so we printing these 10 documents in a loop so you see everything is happening in a sequence so what I’m trying to say is that this goes like your job one consider this entire snippet as job two and this goes like let’s say some job three so we are not getting job three before the job two or job one after the job three so what is the output output is a sequential output right now that is what a thread is so what is a thread thread is an execution context so what does this mean this means that it’s going to execute your code in a sequence threads always execute code in a sequence right so one after the other so this is one of the demonstration regarding the main thread which is nothing represented by the main method now what I will do is I will write one class here now this class goes like some my task which extends not extends let’s say my task so my task is going to execute a task for me so this will execute a task for me here what I’m going to do is I’m going to say C so so even we’ll put up a loop here and this Loop goes like a similar Loop so printing the document number document right so here I’m going to put some different D limiter so that we can understand printing document number this from printer one right so this is from let’s say printer 2 and coming here I’m going to say this is your printer one so this is how we going to come up and understand so my task over here is having a method which is going to print the document but this guy will print the document from the printer tool and this guy over here is going to print the documents from the printer one so within the job one and job two I’m going to introduce this job called my task so my task is a new my task right and coming here I will say task. execute the task if you will see now what we have done we have made my task as job two and this guy has job three and this goes like job four now when I will run this code what you will find is that application started printing of documents started so printer 2 is in use and thereafter printer one is in use right so as per our discussion main is executing everything in a sequence and to your surprise you need to understand this point here that till this task is not completed below written jobs they are blocked I need to now mention this point till job two is not finished below written jobs are waiting and are not executed so this is something which we need to understand because of sequential operation here right so we are we are seeing a sequential operation so that is the reason till job two is not completed below mentioned instructions or the jobs they are waiting now in case job two is a long running operation right so in case job two is a long running operation consider this guy is going to print several documents right there can be some several documents which we are supposed to print now till these several documents are not printed right in case job to is a long running operation that is several documents are supposed to be printed right so this is a use case which so in such a use case os/ jvm shall give a message that application is not responding right or we will have some you can say Behavior some sluggish behavior in the apps now what is meant by this sluggish behavior in the app it means means that we will be able to see some kind of apps which are hanging right so you see that apps they are going to hang right so even I can say apps app seems to hang now why app will seem to hang because your main thread is blocked right so the only Point here is that your apps they might seem to hang they will have some sluggish behavior in case you are doing a long running operation within the main thread now this is the use case where we need a thread so I think the use case is clear right so what I’m going to do is so this my task you come up with this my task in the same way so let me comment down this code part so instead of having it a normal class you make it a thread you overwrite this run method with the public because run in the parent is public so you need to override it so this guy is is override it here for us right the run method so I get the same operation being performed but this goes in the run method and my task is now a thread right so I can very simply understand that my task is a threat because inheritance makes this relationship to come up as is a relationship right so my task is a trade so guys this is certainly clear to everyone I hope so so in the next part of this is like what now so you won’t say execute the task so rather we will come here and say task dot start so start method internally calls the run method right so start shall internally execute run method now let us reexecute the same code and see what is the outcome so we see a similar output here right but if you can observe application finish is coming somewhere in between previously it used to come in the end so I’ll give a rerun again now I see a different output right application started sometimes printer one is being used sometimes printer 2 is being used and there after lot of times printer two then sometimes printer one and then the app getting finished so again rerun this application you see again a different output so every time when you will execute your code over here what you will see is a different kind of an output right why now the outputs are mixed for us because along with the job three job two is executed parallely right what I can say now so now Main and my task are executing both parallely or con concurrently that is the reason you are able to see some a mixed output for both of these threads so guys when you write a thread thread’s going to work parall to your main thread right so now my task is also known as a child thread or sometimes the terminology can be a worker thread so child thread or overcut thread right so this guy is going to perform certain operation which will not affect the performance of the main method or the main thread right so we are having this main thread which is not supposed to be getting affected by the operation of my task because my task is executing separately main is executing separately within the same process of course so they are not interfering in a way that it has to be waiting for one guy that it should stop it should finish its execution then the main will resume so we are getting the things executed in a parallel operation now the same thread called my task can also be created so considering that you have a class called someca right and I’m just going to commment down this guy now so considering that we have this my task extending CA and thread both now this is not allowed in Java multiple inheritance is not supported right this is an error why because multiple inherit isn’t supported so what we will do so we’ll come here and we will say extend CA but don’t come up with the thread you can say implements runnable so that that’s just one basic change here rest everything Remains the Same so guys in case your class is already a child of some other class right so if you are already having this inheritance implemented so you won’t be able to write comma thread multiple inheritance isn’t supp in Java so you can anytime come up and say implements runnable coming here you are now going to do it in a different way right so let us see how we can create the object so you can say runnable R is a new of my task so you write a polymorphic statement the reference variable of the interface is pointing to the object which implements it then I will create a normal thread object I will say thread task is a new thread within which I’m going to pass this runnable reference and then I will say task. start so this is a bit of change when it comes to runnable versus your threads so you run this code here so it’s going to work in the same way for us right so it’s again a thread so printer one or printer two right so they are they are now the mix outputs mixed outputs they definitely show that our jobs are getting executed parall so main is not getting affected now right so that that is how we are able to understand this point so every time you will run this code you might end up in looking the different outputs why different outputs because execution of threads is not in our hands it is in the hands of jvm jvm can perform time slicing it can give some time to the main threat sometime to the my task right so that’s how we are able to understand and the threads in Java guys I hope you have understood it so now we shall be proceeding towards the next part so the next part over here is to differentiate between thread class and the runnable interface right so guys there is some common things and some dissimilarities so over here in thread and in runnable so a unique object is created for both of the cases right so memory consumption of course increases because we have a separate thread running in the same process then class extending the thread cannot extend any other class because of the multiple inheritance but here runnable helps us to perform this same uh use case so if you are already extending you can Implement a runable so thread class is extended only if there is a need of overriding the other methods of it so if you are actually inheriting the thread class so you might be looking forward to override its other method as well but in case you don’t want to do that runnable is the best use case right because runnable you can only have this run method which you can override then having thread we got tight coupling and runnable is loose coupling so of course guys when you have a loose coupling dependencies they gets reduced and is a better use case to use so moving ahead now so I hope tread versus runnable is is good to go we saw how to create a thread what is a thread and how it is helping the main thread to accomplish the jobs so what is this main thread once again main thread Revisited guys main thread is the important or the most important part of any application or a Java program so whenever you run your application your main thread is executed so every program will have this main thread and Java main thread is needed so that we can spawn the child threads we can create child threads we can start them you you have seen that we created my task we started the my task right so it must be the last thread to finish the execution that is the main thread stops the program terminations so it’s it’s going to terminate the program so when your main thread is finished so it is basically a termination of your application itself right so Java main thread guys how it’s going to work let’s see that part now so typically jvm is going to start the main thread and some other demon threads at the same time right so when you run your application the main thread and the demon threads they are started by the jvm your main thread can further start multiple child threads for example child thread a child thread B and the threads can further start the other threads for example thread a can start the thread C so if we talk about our example here so there can be my task there can be your task for an instance we can have uh some other guy called your task right so this guy is working on some printer three right so we we can have these multiple threads which can be spawned in the main method itself so here I can just say thread your task is a new thread in between I can pass a new of your task and then I can say your task. start right so it’s one the same story either you write this polymorphic statement or you directly pass the reference so these two uh instructions can also be you know written in a way of a new thread and in a new thread you pass a new of your task and then you simply say the start right so you can conclude it in a single statement in case you want if you don’t want to have the reference uh to the thread so these threads right so they can be multiple threads here and there so now we see multiple threads in action right so if you want you can have your threads in a lot of threads executed from the main thread itself even what what we can do is from uh these threads we can execute some other threads that is that is what we were trying to understand and one more thing any thread can be marked as a demon thread so you can just say task. set the demon as true right so what is this demon thread demon thread is a thread which is going to be executed by the jvm whenever the application starts right it’s going to initi it’s going to uh execute the thread along with the main thread if you see the image that is a bit about how the main thread is going to be execute so now next part is multi-threading in Java so typically multi-threading begins when you have more than one thread in your process so of course if along with the main thread a new thread is getting into execution that is a perfect example of multi-threading itself but what we are going to do is we are going to take up some use case that in case there are couple of threads or multiple threads other than the main thread so how they going to work and what can be the uh you know scenarios which we can observe when they are executed so what is multi-threading so guys multi-threading is the ability of a program to execute more than one threads concurrently where each thread is handling a different task at the same time right so that the available resources can be utilized in the most optimal manner so let’s say there’s a main thread and Main thread is going to start some child threads and there can some switching between these child threads right because they are going to perform the jobs and your time slicing will be coming into the action where some jobs of thread a will be finished some jobs of thread B some jobs of thread C right so there will be a switching between these execution of the threads so let us see one demonstration where multiple threads can be introduced so I’m going to write a new Java program so a new class so this goes like my uh let’s say sync app with the main method so this time I’m going to perform a separate uh operation right so consider that here your application started so this is your beginning of the main thread and this will be the ending of the main thread right so that is how we are considering so main is a thread now we understand it right so main is representing main thread all always remember this guys so in order to prove this what I can do is I can uh just try to say in I is 10/ by 0 right and I will run this code here as Java application so what you see is it says there’s an exception and the term which jvm is using is thread main at line number 11 if you see this line number 11 is divide by zero error that’s like arithmetic exception right so what I’m getting is is thread main right so jvm says main method as thread so that is one of the proof of concept what I’m trying to say that why main is representing the main thread right now there is a class called printer so printer is supposed to print the documents so I’ll have this guy called print documents right so printer is supposed to print the documents how many documents you want to print right so in begin let’s say int some number right so I’m just going to take some number here so I will say for INT isign one go till this number and say Plus+ so there there can be even more details in the print document but I’m just taking one of the examples here so I will say ciso printing Document Plus the I so we are going to have this document printing uh done for this IE I can even take one of the name right so I can take doc name and this can go like number of copies what is the name of the document which you want to print and how many number of copies you want so I’ll take this number of copies goes less than equal to number of copies right and printing instead of the document I’m just going to have this document name so I think this is one of the use cases which I wanted yeah now having a printer object so I’m going to write a printer object printer printer is a new printer this is one of the printer object and if I want to print the documents right so what I will do is I will say dear printer please print me the documents I want uh 10 copies for a document called ishan’s profile.pdf so I want I want the 10 documents for ishan’s profile.pdf so when I will run this code here so you see your printer is printing uh the copies so it has clearly said 1 to 10 right now why we should be getting the documents printed here in the main in the main method in the main thread we can have a separate thread right so I’m going to write a separate thread So This Thread goes like uh let’s see my thread which extends thread and I’m going to override this run method always remember guys you can any time have your runnable interface or this thread whatever the way you are comfortable right so here in the my thread I’m going to have this guy called printer PF I’m going to have a reference to the printer in the Constructor so I will take printer P here and I will say PF is p so in the run method here I will say PF do print the document so I need 10 copies so this is like John’s profile or let’s say John’s profile is the name so now so once I created uh the printer object I’ll create the object of my thread so I will say my thread MF is a new my thread and I’m passing the printer over here you see we have one object of printer right how many objects of printer I have created so we have only one single object of printer right only one single object of printer so we are giving the reference so my thread is having reference to the printer object so since my thread is having reference to the printer object so printer is copied to the p p is copied to the p and you are doing a print documents here so I will say MF dot start now what will be the benefit the benefit is that printing is happening in a separate thread that’s like my thread so now when you run this code you see application started application finished so main thread is okay to go with it right and the jobs are getting executed for uh John’s profile by my thread now consider along with the my thread you see you you got this my thread I’m going to write your thread which is very much same all right it’s it’s it’s exactly the same story so instead of John’s profile this is fana’s profile which we want to print right so uh the way we got my thread in a similar way I’m going to say your thread let’s say VF is a new of your thread so it’s going to work on the same printer so you see my thread is having a reference to the printer object your thread is also having reference to the printer object but guys what is the use case or the scenario scenario is that we have multiple threads working on the same printer object now this is a very difficult use case so you see printer is now going to be shared between two threads if I start both the thre threads now so I say yf. start as well right so you see what’s going to happen so we are getting the documents printed so you will run this code so any time of any point of time what you will see is that the outputs they going to get mixed up for us right so let me just keep on running this part here so you see the outputs they are getting mixed up now so 1 to n for the John then 1 to 10 and then the John profile so it it’s totally you see the output coming here now right it’s all mixed up can you imagine such a scenario in a real time envirment so let’s say two people they want to print the documents in the printer can you uh imagine printer printing document one from the first fellow and then the document two and then document three then four so it’s all mixed up right so rather what printer will do printer will take the commands from the multiple people multiple computers but it will print one after the other so this is one of the use cases which is not good to go guys right so this is this is certainly not what we want so what is this this is known as asynchronization threads are running parallely now there can be a use case there can be a scenario where multiple threads so if multiple threads are going to to work on the same single object we must so we must synchronize them so they are not they are not supposed to be executed in the sequence so what I’ll do is I’ll introduce one more uh method here in this for Loop here so I will say a thread dot sleep for let’s say 500 what is this thread dot Ste guys Sleep Method will temporarily pause the execution all right so I’m going to select this guy and say surround with tri catch because Sleep Method will throw an exception now when I run this program here so what do you see is along with some delay the output is coming up for us right so let me run this code once again but this output is not at all acceptable since my thread and your thread are working parall on the same object so it is printing the documents sometime s for my thread sometime for your thread which is not a real life use case this is implemented something in a wrong manner right so what I can do is immediately after the start method I can say mf. join so what does this join method is going to do so it will again throw an error so we’ll surround it with the TR catch block so now what you will observe is synchronization coming into the action let me run this code what you see is after putting the join all the documents are printed from the my thread and then it is your threat in execution let me re-execute the program for you people so guys you see your John’s profile till John’s profile or John’s papers are not finished Fiona’s paper were not started that is what we are able to understand as synchronization that is by having this join method coming into the action so if you have many people who are going to you know uh get this printer utilized you cannot put

    join on each and every uh you see method call on on every thread so what I can do is I can come here and I can just mark my method to go as synchronized so what is synchronized method now so when your thread is going to execute this method called print documents it will acquire a lock we call it an intrinsic lock right now once the lock is acquired no other thread can access the print documents so rather than having the join function call what I’m doing is I’m marking My Method as synchronized so if multiple threads are going to access the same method again and again so what we are going to do is we are going to synchronize them then and now when I will run the code what you see is the same output coming in for us right what is the benefit here the benefit is now we need not to put join method calls on each and every thread right so we got this synchronized uh method itself we can come here in our thread we can say a synchronized block instead so synchronized method was acquiring the lock on the method right so no other thread can access it if one thread has acquired the lock so this is acquiring the lock as a block now no thread can execute or access the printer object till this block is not finished right so this synchronized block has to go in your threads so there are two different ways by which we can Implement synchronization using the synchronized keyword so the output will again remain the same for us now where is is synchronization needed in multi-threading we need synchronization in multi-threading when both the threads or multiple threads they are working on the same single object now that is the use case where you need to implement synchronization so guys I hope this is clear to everyone what is the synchronized keyword so now let us come back so guys the way we have synchronization in a similar way we have some something known as a thread pool right so thread pool will manage the pool of worker threads and contains a queue that keep the tasks waiting to get executed so there there will be a Que Now we will have lot of tasks right for the application which we have to do and a pool can be maintained for these threads which will be executed automatically by this API called thread pool so explore this part so what are the various thread math guys so in order to create the threads we got a thread object and then say start right so we can join the thread there’s something known as a thread do sleeve there can even be an interthread communication so guys we have wait and notify as methods and a thread can be marked as a demon thread you just say set demon as to what’s a demon thread it’s going to get executed along with the main right so when the jvm is going to start the app it’s going to start the main as well as the demon threads let’s understand what are regular Expressions a regular expression is a sequence of characters that constructs a search pattern when you search for a data in the text you can use the search pattern in order to describe what you are looking for so for example you have a regular expression like this as shown in the slide and you can see that the cap rep represents the start of the line and a set which is enclosed within the square brackets represents letters numbers underscore hyphen everything it compris of all the alphabets numericals and special characters as well and also if you want to write a regular expression which is of 3 to 15 characters long then you can enclose it within the curly braces as shown here and the dollar symbol implies the end of the line so this is the basic regular expression where where you can understand how you have to start writing a regular expression and how you can include the alphabets the patterns everything within the square brackets and how to represent the length of the characters in flower braces and finally the end of the line right so a regular expression can be a single character or a more complicated pattern it can be used for any type of text search and text replay of operations a regex character can be simple ABC or it can be a combination of simple and special characters like AB into C or it can be example with braces which includes a d star D plus anything so I hope you understood how actually it looks like now with this let’s understand what is Java regex so a Java regx is an API which is used to define a pattern for searching or manipulating ating the strings it is widely used to define the constraint on strings such as password and email validation so you can see in this below GIF over here that it is trying to search for a regx that is a regular expression and it’s trying to figure out whether it is able to match the pattern or not so there are different methods of using Java regex so let’s move ahead and look at the different categories of regular Expressions the first on the list is matcher class this class is used to perform the match operations on a character sequence so this is used to match a character sequence so it compris of various methods the first one is Boolean matches this is used to test whether the given regular expression matches or not next Boolean find this method is used to find the next expression that matches the pattern so once you get the matches the then it will go ahead and find the next expression which will be able to match the pattern or not if not it stops there and then it will again go ahead and find the next one next Boolean find in start so here I’m passing the parameter called inst start and by doing this it will help to search the next expression from the given start number so you have one more method called string group again this is used to return return the math matched sequence so when you get the proper match sequence by using the Boolean mattress and Boolean find then you have to return the match sequence in order to do that you need to write the string group method next in start this method is used to return the starting index of the regular expression and similarly int end is used to return the ending index of the regular expression and you have the group count which is used to return the total number of the math sequence so these are the methods of match class now let’s move ahead and have a look at the various methods of pattern class pattern class is a compiled version of regular expression which is used to define the pattern for a regex engine so again this also compris of various methods first static pattern compile and here I’m passing the parameter as string regex okay this method will come file the given regex and Returns the instance of a pattern I will tell you how exactly all these methods work with the help of an example after this for now let’s understand all the different methods next you have a matcher match which compris of a parameter called car sequence input so this is used to create a matcher that matches the given input with the pattern and the matcher is the one which is the previous one which comprise of a Boolean find buan search in start end and everything and this matcher is used to create a matcher that matches the given input with the pattern so suppose say you have a pattern that comprise of a special characters along with the numericals and alphabets so what it will do it will try to match the given input with the pattern so for that reason you need to use this method next method is static Boolean matches string regex so this works as a combination of compile and match methods next you have string split this is used to split the given string around the matches of a given pattern so after that you have a method called string pattern and this is used to return return the regular expression pattern now let’s see a small example of how exactly it works so here I have an example in this I’m going to check both categories that is match and pattern as well so first what I’ll do I’ll just import the package for regex and then I’m creating a class called regex example and inside the main method I’m giving the pattern as pattern. compile Dot and Dot that is a starting index and the ending index so it implies I can use anything as a starting index and I can use anything as a index but the thing is it should comprise these x and x and between so for that I will use the matcher which is used to match the given pattern right so inside this matcher I’ll write a and b so what it will do it will match the given pattern so this is the pattern and this is the matcher I’m using both the classes that is the matcher and the pattern so I will check whether the given pattern will match the given input string or not and if the string matches the given reg X then it will say match do matches and it will display the output so now let’s run and check for the output okay so it’s telling string matches the given reg X and as I already told you it will always display the Boolean result that is true or false so it is telling true so now even if I give something like this so what do you think will be the output let’s run and check for it so you can see again it’s telling string mat as a regx pattern but then if I remove One X from here and then I write X over here so it does not match the given pattern right so obviously it will say as false so you can see here it’s telling false right so I hope you understood how to write the pattern and how to write the matcher for the given pattern and remember remember one thing it always displays the output in the form of a Boolean that is either true or false so what happened here in this case internally it uses pattern and mature Java regx classes to do the processing but obviously this reduces the code lines and pattern class also contains the mature method that takes the regx and input string as argument and Returns the Boolean result after matching them so this code works fine for matching the input string with a regular expression in Java so that’s exactly how it works now let’s move further and see the next category that is regex character class so again even this comprise of various methods like AB C so it compris of ABC which implies a simple class that compris of a b or c next negation of ABC this comprise of any character except a b or c that is a negation next you have a to z and capital A to Z which impres a range that includes small A to Z and capital letters from A to Z next it has a through D or M through P that is a union that is a through D or M to p and next you have d e or F which is a Intersection For A to Z and next you have a through z except for B and C that is is AD to Z that is a substraction but you have to negate B and C okay and the last one is a through z and not M through P so these are the various categories of a character class let’s again take a small example and understand whether this works fine or not so now let’s check how this works so again inside the main method I’m using a pattern do mat method to check whether the given set of characters matches with the given pattern or not so first it compris of X Y and Z so you can see here all the character set comprise of the simple class that is ABC that is XY Z so when I pass WB c d it will obviously written false because it is not among X or Y or Zed and now if I just pass X it returns to Y because inside this class it comprises of X Y or Zed right and again if I try to pass double x 5 Y and 1 that it returns false because X and Y comes more than once so that’s the reason it will return false now let’s run and check for the output so as I have already told you it returns false true and false so this is the given character class right right and if I try to match the pattern that is out of the character class then it will obviously return false so this is how you can write an example for character class and check whether the given set matches with the input pattern or not now let’s move ahead and understand what are regx quantifiers the quantifi specify the number of occurrences of a character so again even this compris of various methods for example X followed by a question mark it implies X occurs either once or not at all then you have X+ which implies X occurs more than one time and x with a star that is a multiplication symbol implies X occurs zero or more times and if you have a x followed by an N within the curly braces it implies X occurs n times only and if you have a n with a comma then it implies X occurs n or more times and and if you have a parameter like y comma Z then it implies X occurs at least Y times but less than Z times so these are the various methods of regx quantifiers and let’s see even how this works so inside the main method I’m simply printing this thing that is quantifier and now I will try to check whether the pattern matches or not this symbol in the quantifier implies it should occur either one or it should not occur at all right so when I say A Y and Zed followed by a question mark and inside that if I just pass a parameter a it will say true which implies a occurs only one time next in the same category if I write a three times it says false because a comes more than one time so as I’ve already told the symbol implies I either once or not at all again in the same category of class if I write this it will again say false because all these alphabets comes more than one time so that’s the reason again even for this case which says a m n t it is false because m n t is not under this category and a comes twice that is the reason and this should be true because a y set again does a y set as well okay next plus gtif fire implies what it should occur more than one time so a y z plus implies it should occur more than one time so it says true because a comes once even if I write 3 a again it says true because a comes more than one time and even if I write this pattern again it says true because it comes more than one time and even if I write this it says false because mmt is not a matching pattern okay that is M and T are not a matching pattern so this implies it should OCC either zero or more number of times right so when I give this pattern followed by a star which implies and if I write the matcher this it says yes because a y and Zed occur either zero or more number of times so let’s execute and check the output so you can see here the results with respect to the above correct so as I’ve already mentioned you quantifier works with Star Plus and question mark it implies either it should come one time or it should come zero or more than one time or it should occur more than one time so depending on the type of the quantifier you can give your matcher and it will check whether the given pattern matches with the quantifier or not so this is how it works so the last category on the list is regex meta characters so the regular expression meta characters work as short codes so dot implies it can be any character D implies digit capital D implies non-digit s represents any white space and capital s represents non-white space character W can be a word character and caps W can be a non-word character B can represent a bound boundary and capital B represents a nonword boundary so out of all this you can understand that it just represents what a short code right so let’s also check an example of how exactly this works so inside the main method I have written metac characters D so d means digit right so in D if I give ABC it will say false again and in D if I give one it says true why because digit comes only once and in the same day if I give triple four and three it says false because digit comes more than once and inside the D if I give a combination of digit and a character again it says false right so now in case of meta characters capital D so if I give a meta character capital D and if I try to write a alphabet that is a character it says false because capital d means a non-digit but it comes more than once so if I give in the capital D as just one it says false again because it is a digit again the same thing goes with here as well because these are the digits so in this Capital matter character D if I give a match M it is true because it is a non-digit and it comes only once so a meta characters D with the quantifier so if I give D and followed by a star and if I pass ABC then it says true because it is a non-digit and it can occur zero or more number of times so in these cases what happened I just use a single meta character and I tried to pass a string so that was the reason it was telling false now if I give this it obviously says true because it is a non-digit and also it can occur more number of times so here only if I give D+ so it will say true only so this is how it actually works so that was all about the meta characters now let’s move further and see a small demo where I will tell you how to find the given pattern out of the string and also I will explain you how to verify the email validation okay so I have an example over here this is used to find a given regex pattern and it will also check whether the given string match is with our given pattern or not so I have a class called demo and inside the main method I’m using scanner SC is equal to new scanner of system.in I am using a scanner class because I want to read the input from the user so first what I’m saying inside the Y Loop I’m telling enter the regex pattern and I have to obviously use this because I want to scan for the next line if there is anything as such then I’m using a patterns pattern class to compile the given regx pattern that is is the user input pattern and then I will use the matcher class to match whether the given input string will fall under this given matcher or not if not it will say match not found if it will find the pattern with the help of a matcher doind it will say found the text whatever is entered by the user at the starting index of what is the start of the index the matcher group is used to return the Matched Patterns group and the ending index and finally it will retrieve the matcher do end means the ending point so it will say found the text at the group starting at the index the location where it started and the location where it ended if it is not found then it will say matcher is not found so let’s execute and check for the output so it’s asking me to enter the regex pattern so what I have to enter either I have to enter a part of it or I can enter the full thing so I’ll will do one thing I’ll just type YouTube channel right so you can see it is telling found the text YouTube channel the one which I entered starting at index 19 and ending at index 34 so now check 1 2 3 4 5 6 7 8 8 9 10 11 12 13 14 15 16 17 18 19 so it is starting at the index 19 and it ends at index 34 which is this thing right so again if I enter the pattern edura and I’ll keep it as small it says match not found even the cas sensitivity also matters no matter you give the same string again the K sensitivity also matters a lot so if I give welcome it says it is starting at the index zero because this is zero and it ends at the index 7 correct so this is how you can match the pattern with the given input string so this is all about the Searcher and the finder now let’s see a small example of email validator so I have created two classes here one for email validator and the other one is for the testing of a email validator so in this regard I’m performing a email validator test that is unit testing so inside the email validator I need two classes one is a pattern and the other one is a matcher so the email pattern that I’m going to give compris of all this that is this is the starting index as I already told you and this is the ending Index right so it should comprise of all these things plus these things and there should be a add symbol because it’s an an email address followed by again a digits and small and capital letters and again the same thing and it can also comprise of more number of digits and finally it has the ending pattern right so inside the email validator I’ll try to match with the given email pattern and I have a Boolean validate final string hex so this is used to match the hex of the given parameter and finally it Returns the matcher and now I have the email validator testing so here I’m using data provider to provide the data and this will be the unit test case which I will be running as a testng test so if you wish to know more about what is test NG how exactly it works what is unit testing you can check out the videos on our YouTube playlist and you will get Hands-On on even those topics as well so now you have a public class email validator test yeah I’m going to create a object of a new email validator and using the data provider I’m providing the valid email address that compris of a string followed by a add symbol and then it comprise of the domain followed by a particular domain it can be net it can be doom. go anything right which implies it has to comprise of this followed by at if it is Gmail so it has to compile Gmail dot again com com test anything so these are the email address which is valid and I again have a invalid email address so you can see if I simply give us Eda it is not a valid email address right so the email address should comprise of this pattern if not it is a invalid email address again here Eda followed by a do and gmail.com again it is a invalid so again you can see after a gmail.com again it compris of something that is also a nonvalid email address comprise of star percentage so many things right so these are not a valid email address so what I’m doing I’m using ADD test annotation to test the valid email address so here what I’m doing I’m passing the valid email provider so what happens is it will check both the valid and invalid email address and it will display the output so the data provider is used to provide the set of the data and from there you can validate the email address so I’m writing two test one for valid email provider and the other one for invalid email provider so whatever is present in this I’m sending it to a variable Temp and then I’m validating that and finally I’m checking if the result is true then I’m using assert equals to true and if the result is false I’m giving assert is equal to false so let’s check the output so I’m going to run it as a test NG test and let’s check for the output so you can see here first the valid email addresses till here right so these are the email addresses which are valid and that’s true and now talking about the invalid email addresses it starts from here and it is false why because that’s not true that’s reason it is false and it will also return the string for valid email test and the invalid email test so both on the default test and suit the test that was executed was to and there were no failures because whatever I have written the code was working perfectly fine and that’s a reason so even if I have to check the result of running class email validator test you can check all these the tests that was run was two one is valid and one was invalid and this is the class name which is followed by a package on both default suit and test the test was run Within These many seconds yes so this is how you need to validate the given email address and check whether it is invalid or invalid that’s exactly how it works and I hope you got a brief idea about what is regular expression how you write a regular expression what are the different categories of regular expressions and how to configure your program and check whether the given regular expression or a pattern matches with the given input string or not and how to validate a email address as well let me tell you what is socket programming in Java so Java socket programming is used for communication between the applications that is running on different Java runtime environment it can be either connection oriented or connectionless so basically socket and server socket classes are used for connection oriented socket programming I also told you that it also has a connectionless programming and that is achieved with the help of a datagram socket and datagram packet so basically the client in the socket programming must have two information one the IP address of the server and the other one the port number so in order to connect to a server from the client and if the client wants to send a request to the server then it should know the IP address of the network and the port number which the server is operating on so this is all about the brief of the socket programming now let’s move further and understand what is a socket a socket is one endpoint of a two-way communication link between the two programs that is running on the network the socket is bound to be a port number number so that the TCP layer can identify the application that data is destined to be sent so basically a connection will always happen between the server and the client port and obviously when a client sends a request server has to wait for the client request then the server has to accept the request and then establish a connection with the client and processes the request and send the response back to the client so this is what it does and for all these things what you need you need a socket which is an endpoint for a two-way communication between the two networks or the two programs that is running on the same network so I hope you understood this now let’s move further and see some of the methods of socket and socket server classes the first method for socket class is public input stream get input Stream So this method will Returns the input stream that is attached with this particular socket next output stream and this method will return the output stream that is attached with the soof and next you have public synchronized vo close if you use this particular method it will just close the socket that is a connection the next one is Socket server this will return the socket and establish a connection between the client and server because as it is a socket of the server end it will obviously have to return the socket and establish the connection because that is what it is doing right when a client send the request and if the server will not accept the request then there won’t be any connection between them so that’s what what a public socket accept does and after that you have one more that is public synchronized void close and this will obviously close a server so these are few methods of socket and socket server classes having understood this now let’s move further and understand the client side programming so what do you think a client side programming and a server side programming as so basically when a client wants to connect to a server or if a client has a request at a server should accept and a server wants to send back the response then what happens you need to First write a client program for which you need to send a request to the server and you have to write a server s side programming so that your client will get the response back from the server by accepting the request so that’s why we need the client and the server s side programming and this is achieved with the help of a socket which will help you to connect between a network and which will act as a Interlink to to help you to connect to a network between the client side and the server side to connect to one another machine we need a socket connection as I have already told you a socket connection means the two machines will have the information about each other’s Network location that is the IP address and the TCP port and the java.net docket class represent a class so in order to open the socket what you need to do you need to create a object of a new socket and pass the IP address and the port number okay so that’s how you need to First establish a socket connection using java. net. socket and provide the IP address and the DCP port number and after that you need to communicate over a socket connection and the streams are used to both input and output the data so that’s what is communication with the client where you use the streams to input and output the data and after that you have to close the connection by using public synchronized void close simple so this is all about the client side programming and now I’ll also tell you what is serers side programming and then we will see a demo how to establish a connection and how the client sends a request and how the server accepts a request and how it responds back everything before that I will explain you what a serers side programming so after you close the connection using the client the socket connection is automatically closed explicitly once the message to server is sent and now the first thing is I have to establish a socket connection and write a server application you need two sockets a server socket will wait for the client request when a client makes a new socket and a plain old circuit is used for communication with the client and after that you have to output and communicate with the client through socket so you will use the get output stream method after finishing everything it is important to close the connection by closing the socket as well as all the input and output streams now let’s take an example and understand it’s working so here I have two programs that is the client and the server so first I’ll tell you about the client I have imported the package that is import java.net dostar because I want a network connection that is the reason I’m importing that and after that I’m importing the java.io dostar because I want the input and output streams that is a reason so first what I will do I’ll initialize a socket I’ll initialize the input stream and the output data stream so for that what I’m doing I’m just writing it as private socket soet is equal to null I’m initializing all the variables to null because I want to use it in the later part and after that I’m creating a Constructor for this class that is client and I’m passing the address and the port number that is the IP address and the port number and now what is the first step I have to establish a connection so in order to establish a connection what I’ll do I’ll give socket I’ll create object of a new socket and pass parameters and the arguments as address and port and as soon as it does that I have to print connected and now for that I need to take the input from the terminal so for that what I’ll do I’ll give new input data stream is equal to system.in and after that out is equal to it has to send the output to the socket so that is the reason I’ll use this so any exception then it has to handle and after that I need a string to read the message from the input tab that is the reason I’m using it in this way and one more important thing over here it keeps on reading unless and until over is displayed on the screen so I can write as many number of lines as possible unless and until this over will be displayed on the console so inside that I’m getting line is equal to input. read line and I’m outputting that again after that I’m sending the request I am establishing the connection I’m communicating with the server finally I have to close the connection so I have to explicitly close all these connection that is the input data stream the socket and the output data stream so these are the variables for that and I’m closing all these connection and finally inside the main method I’m just giving the IP address and the port number so this is all about the client but before the client has to say connected I need a server program which has to wait for the client to get connected right so let’s now see about the server program again the same thing but here instead of the output data stream I will get the server socket because I told this is a server site program and I need a server socket for this that is the reason I’m using this and then I am creating a Constructor of this and passing the variable as in Port so I’ll create an object of a new server socket and pass the variable as port and I’ll say server has started waiting for the client then client get connected when I go back and connect the client by passing the address and the port number server says client accepted so after that what I’m doing I’m writing the string unless and until until the over will be displayed so this line will take the input from the get input stream okay and it will read the string line from that and after that I have given input because I need to do input. read line and out. WR UDF so here what I’ll do inside the triy block it will say read the input that is given by the client and then display that after that again I have to close the connection and create an object of a new server with the port number here I’m passing everything here just I’ll give the port number because client is connected to a port and server is connected with both IP address and the port number so that’s how I’m writing this first I’ll execute this server and then it will wait for a client and then I will execute the client and it will say connected and then I’ll start writing anything then server will say client accepted and it displays the request that client has sent and it will rever back the response to the client I hope you understood this now let me first run server so you can do the same execution by opening your command prompt or your terminal but as I’m using eclipse and I have a inbuilt option to execute it like this so I’m doing it on my Eclipse itself so it is telling server started and waiting for the client now what I’ll do I’ll execute the client so run as Java application so it’s telling client accepted so there are basically two consoles it’s telling connected and it is asking me to type whatever I want I’ll go on typing even though I wrote so much it still did not display overr right so it has the ability to enter as many number of lines and you can send as many number of requests that you want to the server right so now when I check the server it’s telling client accepted it’s displaying what all I wrote It’s displaying like hi everyone I will welcome to tra YouTube channel I hope you’re understanding the socket programming in Java and so many things right so yes you just saw first the server started it’s telling waiting for a client and then when I connected with the client it told connected and it just took the string arguments from whatever I was passing from here right and then the server told client accept it and it displayed whatever request I’m just going on typing over there again if I write something else also it will again display in the server screen I’ll just say enter and you can just see that on the server screen right so that’s how it basically works and it will get connected to your client it will send back the response and it will display all the client request and respond back so that’s all about the client and server side programming using sockets in Java so this is how you can actually establish a connection using the socket because it’s Interlink between the two programs that is running on the same network right who is a Java developer Java developer is a computer software developer a programmer who integrates Java programming language into the development of mobile and Computer Applications web development and other sorts of requirements needed at both client and server end now with this let us move on to our next topic which is how to become a Java developer to become a Java developer there are basically three stages in the first stage you have to earn a college degree the first stage requires you to complete a qualification in computer science with a focus on software development this could be any degree related to computer science and information technology or you can either choose Bachelor of engineering or Bachelor of technology in the field of computer science or information technology in the next stage you need to get certified with Java the second stage requires you to complete an online or an offline course specializing in core and advanced Java trying out online examples is a good way to develop your specialization in Java and in the third stage you need to get experienced the third stage needs you to look for a placement or an internship program while studying this will provide you with relevant experience as well as guidance and mentorship from experienced software developers and finally you become an experienced and professional Java developer with this let let us move on to our next topic which deals with the Java developer skills overview when you Google for the skills required to become a Java developer you have a lot of skills showing up now we shall categorize the skills required for Java developers into two variants firstly the Java developer skills Technical and later the soft skills of a Java developer firstly the technical skills the technical skills required for a Java developer are he must be well known with core Java the core Java includes objectoriented programming techniques as well as the design patterns in Java abstract classes in Java interface and serialization followed by that we have om omm stands for object relational mapping so in this skill you need to be well vered with hybernate Java persistence API Eclipse link open jpa and after that you have the Java build tools Java build tools are the most crucial skills required by every Java developer some of the most important build tools are maven and gradal followed by that we have web Technologies a Java developer should be well ver with CSS HTML jQuery and JavaScript followed by that he or she must be exposed to Java web Frameworks like MVC play Java server faces and next to the Java web Frameworks we have application containers the most trending application containers are jbos JY web spere and web logic and next we have Java testing tools test NG junit and selenium are the most trending top testing tools for Java and later we have big data the Java developers must be well vered with dbms Hadoop SQL and jdbc next we have Java e components the most important Java e components are servlets Java beans Java server pages and finally the code Version Control which is GitHub don’t worry we shall discuss each and every one of them in detail for a better understanding in our next topic which happens to be the skills required for for a Java developer firstly we shall discuss core Java the most basic and essential skills required to become a Java developer is the co Java Co Java skills are the building blocks of every successful Java developer The crucial Co Java skills that most recruiters are looking for are firstly the objectoriented programming skills object-oriented programming approach introduces class and object style of coding that deals with the concept of inheritance encapsulation abstraction polymorphism the main Moto of object-oriented programming is to bind the data with the functions together and improve the code stability and safety followed by that we have design patterns design patterns in Java are the standard Solutions followed to solve routine problems faced in software designing life cycle every design pattern acts as a blueprint that allows customization to solve any given design problem in any code during the development of software modules followed by Design patterns we have abstract classes in Java abstract classes in java help the developers to achieve abstraction abstraction in object-oriented programming reduces code complexity by showing the relevant details of the objects used in the program and enhances code readability followed by abstract classes in Java we have inheritance Java inheritance is an advanced level of achieving abstraction in Java programming language the interface in Java enables a better and efficient way of achieving abstraction followed by this we have serialization serialization in Java is a concept that deals with a conversion of objects into a bite stream and transport the Java objects from one Java virtual machine to another and recreate them to the original form serialization enables developers to meet various factors in real-time programming with this let us move on to the next stage where we shall discuss about the Java build tools depending on the task assigned developers need to use a specific tool for every particular task for a Java developer understanding the terminology of build Tools in Java comes handy as Java build tools are the programs that automate the creation of executable applications build tools that one must know are Maven and Gradle followed by this we shall discuss the web Technologies web Technologies provide a simplified and faster way to create Dynamic web content having a better grip on web technology is important as it helps to understand the technique of establishing communication between multiple computer systems via markup languages it gives a way to interact with host for the information like websites and it involves HTML jQuery and CSS at the most followed by this we shall discuss Java web Frameworks to build a mobile application with best features and limited code Java web Frameworks are the best-in-class solutions they support the development of web applications including web services web resources and web abis in a standard way to build and deploy web applications on worldwide web some of the best-in-class Frameworks are spring MVC and play followed by this we shall discuss Java application containers Java application container is an application program in which the software building blocks known as the compartment can be run application containers are designed to provide multiple functionalities such as to provide user authentication logging or establishing a connection with the database topnotch application containers are JBoss and jti with this let us move on to the next stage where we shall discuss the Java testing tools Java Tes with an interface where you don’t have to actually launch your application onto a web browser this support multiple test activities from planning requirements creating a buildt test execution defect logging and test analysis some of the major testing tools that a Java developer should be well versed with are selenium and test NG with this let us move on to our next topic which is Big Data big data has become a trillion dollar industry and hand handling such a huge amount of data has become close to Impossible by traditional data processing software learning Big Data technologies will help the developers to analyze and extract information from complex data sets some of the powerful Big Data Technologies are Hadoop and Spark now with this let us move on to the next topic for our discussion which is Java e components Java e components or Enterprise components the Java Enterprise components enable developers to write server site applications one of the most most common challenges that an Enterprise developer faces is to how to handle requests coming from web-based clients to ease this challenge Java Enterprise provides the Java serlet and Java server pages apis that enable methods for logging activities using cookies on a uses browser and simplify these kind of issues and provide the best solution some major Java Enterprise components are cets Java beans and Java server pages with this let us move on to the next topic which is code Version Control control code Version Control allows developers to keep track of their work and helps easily to explore any changes they made in their data coding scripts comments Etc that is much smoother and easier to implement with this let us discuss the second stage of java developer skills which are the soft skills soft skills are people skills communication skills character and social intelligence among others soft skills enable people to navigate their environment work well with others perform well and achieve their goals now the first soft skill that we will discuss today is the communication skill good communication skills include active listening where you have to pay close attention to the person who is speaking to you and try adapting your communication style to your audience and convey your message in a better manner followed by this the next one is open to learning knowledge is never ending successful Java developers should always be open to learning new upgrades in the technology and keep themselves updated the next one is teamwork teamwork is a collaborative effort of a team to achieve common goal and to complete a task in the most efficient and effective way the next one is work ethics work ethic is a belief that hard work and dedication have a moral benefit and an inherit ability virtue or value to strengthen character and individual abilities the next one is interpersonal skills interpersonal skills are the qualities and behavior of a person used to interact with others properly the better the interpersonal skills the better the growth in man’s career now with this let us discuss the last part of this session which is salary details of a Java developer Java programming language is one of the most demanded ones in the it Industries let us now discuss the salaries offered to Java developers as you can see for a beginner the salary package lies between 3 to 8 lakhs per anom and similarly for an experienced candidate 8 to 13 lakhs perom and the maximum salary offered to a Java developer who is experienced for more than 8 years approximately 28 lakhs perom or greater than that as well the projects that I will be discussing today are ATM machine which is based on core Java Concepts text editor that is based on swings and applets and the signup form which will make use of servlets and JSP Concepts without wasting any further time let’s get started First ATM machine all of you know what is ATM and how it works but implementing the same using cach our Concepts is something interesting so let’s see how to do that here we will be developing the code for user account details bank account and then further we will perform few operations like deposit the amount withdraw check the balance Etc basically it’s based on code Java Concepts and it’s developed using Eclipse so all that you require is your Java install that is your jdk and JRE and you just need to have Eclipse installed on your machine let me tell you one important thing that is I have set the Privileges for account number and password that is you can see on the screen that I have given two account numbers and passwords while running the code if you give the account number and password as mentioned on the screen only then you can do the further operations else it will just display a message saying wrong account number or pin now let let’s see how it works and how the code is being developed so basically when you run the code this is how your console appears and it asks me to enter the account number that will be the one which I mentioned on the screen and the password is going to be this thing enter so when you enter this it will ask you to select the account you want to access that is whether your checking account your saving account Etc so first I will say type f that is checking account so in the checking account the operations that you can do is you can whff the balance you can withdraw funds you can deposit the funds so let’s see how much balance is there in my account it’s zero is it now I want to deposit the funds in the checking account so how will I do that again checking account option three which is deposit funds so it’s asking me amount you want to deposit from checking account so I say I want to deposit some 10,000 enter so you can see here the new checking account balance is 10,000 correct again I will choose checking account and now I want to withdraw the amount from the checking account so I’ll say option two and I’ll say I want some 5,000 from that account so you can see here I withdrawn 5,000 and the new checking account balance will be 5,000 so this implies I withdrawn 5,000 from the account again I will choose option one I will view the balance so it says 5,000 is remaining correct now we’ll go to savings account and again view the balance and do the same operations balance is zero again same thing I want to withdraw some funds like say 4,000 it says 4,000 and now I want to withdraw some funds say some 5,000 let’s see what it says when the amount that we want to withdraw is more than the amount which is in the bank account it says balance cannot be negative correct so when you try to access more amount than which is there in the bank account like the savings account it says balance cannot be negative similarly you cannot just enter the negative values into this now say I want to just withdraw some 2,000 and it says the new saving account balance will be 2,000 so basically this is how you can do operations like same way you do it on your ATM machines and now I want to just say I want to exit so suppose if I enter invalid account number say I’ll enter something like this and I’ll give the pin something it says wrong customer number or pin number that is I have set the Privileges only for those two account credentials so that I can access using only those two numbers you can even include more account numbers and pin I’ll show you how to do that so basically this is all about the working of ATM machine let’s take a look at the code now so here in edura one package I have created three Java files one is for account one is ATM and one is option menu so now let’s see why we have three files for ATM and how it works first we’ll see option menu so you can see here option menu extend account class that is this Java class I’m just reading a money format that will be in decimal and then I’m creating a hashmap of integer and then I’m creating a variable of type hash map and giving a reference for that so basically the first thing that I want to do is I want want to validate the login information that is customer number and pin number as I have already told you that I have set the Privileges for two numbers that is these two account numbers and pins if you want more you can just copy this data. put paste it and you can change like whatever you want you can add more number of privileges like this so the first step when you execute it will just say welcome to ATM project and enter your customer number correct so first what you will do you will enter either of these customer numbers and then it will ask for pin number I’m reading the customer number and pin number using menu input. next int so in case if you enter some characters it has to catch an exception correct so what it will do it will say inv valid characters and it will ask you to enter only numbers because I have set the Privileges only for numbers so in this for Loop I’m trying to check whether the entered customer number and pin number is correct or not if it is not correct it will print saying wrong customer number or pin number that you already saw in the output so after that if the entered credentials are correct then this method will execute that is the get account type in this get account type I have mentioned these choices that is select the account you want to access checking account saving account Choice Etc and then using the switch case I’m using get checking get saving methods if you press exit it will say thank you for using the ATM bu and and the default choice if you press the choice that is not correct it will say invalid choice so here is the get checking and I have defined the method over here that is get checking so what all we had in the get checking method view balance withdraw funds deposit funds exit correct now I’m reading everything that is account balance using money format withdraw input deposit input and everything will be in get account type method correct and obviously case 4 will be your exit so it will just print saying thank you for using the ATM by now similarly for savings account that is view balance withdraw funds deposit funds Etc again we are using switch case to print the saving account balance saving withdraw input saving deposit input everything so this is all about your option menu class now we will see what is there in account class so here it is just require to set the customer number and set the pin number that is first to set the customer number and return customer number and then you set the pin number and return the PIN number so basically account class is to retrieve all the details that is being set in option menu that is your checking balance saving balance your withdraw input deposit funds everything that is being mentioned in option menu class so you can see here that I have checking balance method and I’m returning the same and again I have saving balance so here you can calculate the checking account withdrawal that is checking balance equals to checking balance minus account and then it will return the same that is we saw that when we want to withdraw 2,000 from 4,000 it will say the new saving balance will be 2,000 similarly the same thing will be here that is saving balance minus amount like that so similarly you can calculate the account deposit the saving account deposit that is the balance plus the amount that you enter suppose say the saving balance is zero and if you enter 2,000 so it will add and it will return the balance similarly the same thing with this as well that is account withdraw input and customer saving account withdraw input as well and then it will just check the deposit amount same thing for savings as well and I have initialized all these variables as private because I want them to be local to the class so this is how it works and now coming to the last file that is atm. Java so here this class extends the option menu and option menu extends account so what ATM should do it should obviously extend option menu and I’m just creating an object of option menu and just trying to get the login from option menu so when I execute again it works same it will last same thing again if I enter something it says wrong customer Pinner account number as I have told if I enter something else apart from the numerics it says invalid characters only numbers that is the exception that I have thrown so this is all about the ATM project I hope you understood it now let’s move further and see the text editor so here I’m making use of java swings that is I will be using J text area menu bar J menu bar Etc and all the menu items will have action listener to detect any action and as I have told it makes use of java applet and swing Concepts and similarly all that you just need is a Java installed and the eclipse ID we can say like we can perform all the operations like we perform in your wordpad or your Notepad and it’s very efficient so now let’s see how it works so first let’s execute and see how it works and then I will explain you the code so you got a text editor here you can see you have file and it consist of all the operations like new open save exit and you have edit option like cut copy and paste you have font like bold plain italic and you have size like up to 28 and you have font type that is Roman helvetica IAL corer Century Etc and also you can set the background and foreground color and you can undo and redo the operations now let’s see each of them how it works so I want to say like welcome to edure YouTube channel and enjoy learning now suppose I want to change a font of this I’ll capture everything like control a and then I’ll give font like bold so you can see here it became bold say suppose I want it to be italic you can see even that became italic as well I want to increase the font size like 28 it got done I want to change the font type to Century even that happened say I want helvetica I want times Roman even that happened say I want a color to give for that like background color in something like say I want red okay you can see the background color is red so I want to remove the background color now now we change the font color to be say I want to enter some more text like I did as Java projects and I want to undo that I can just press contrl Z and it goes on removing all that thing and control 5 for whatever I have deleted you can see it’s going on also you can create a new file that I just did also if you want to open something that is is already present you can open from the libraries also if I want to save this I can save it like however I want in the downloads or in desktop whever you want you can save the file by giving save it it will be saved I can enter something and again if I want to save it it will be saved like applet one similarly you can even check that whether it is being saved or not so in desktop you can see it is being saved as applet and applet one so basically this is all about your text editor as how it works like you can perform all the operations like edit font file color undo redo everything Etc sounds interesting let’s see what is the code behind this now so here you can see a undoable text area that extends the text area and Implement State editable why Implement state editable is because we have defined the editable class in which we can edit all the options like I showed you on the text editor so you can see here I have given the key State as undoable text area key and then I have declared the current edit and undo manager and the first undoable text area I have defined it in various ways the first thing it is zero parameterized and then in the next I have defined some parameters like string and I have given it in super as well and then I have used rows and columns and then I have used string along with rows and columns and then string rows columns and scroll bars as well so in various ways I have declared this undoable text area Constructor so if in case something happens you are stuck and you cannot undo some operations that you have perform then automatically the exception will be catched here and next same for redo as well if you cannot perform any redo operations then it again catches an exception you might be wondering why it need to catch an exception correct it’s just because to maintain the normal flow of execution so that your further operations will not be interrupted and next to store the state and restore the state that I have given I’m using the key State as a variable and for the snapshot method I’m giving like condition if the text is being changed then use undo and add edit to edit the current state and now I’m declaring the init undoable and giving some new reference variables for undo manager and current edit and I’m adding the key listener for new adapter and then I’m using the focus listener to focus the event that was being captured and similarly for text listener as well if the value is changed it has to say that the text is being changed and now you can see there’s a text editor class which undoable text area has extended in this I’m declaring few parameters like frame file dialog font Etc and now here comes the text editor parameters like say corer at style it’s size everything and here I have used the option menu bar that is times Roman helvetica aial Century Etc and I have given one one parameters for each of them and then using the add method I’m adding all of them like appending it to the menu and we have to use the action listener to detect any action that is being performed so similarly for bold plain italic menu that all we saw and again using action listener we are calling that event and then I’m declaring all the sizes over here that you saw L till 28 and appending it using the ad method and to detect them I’m using add action listener even for new open save exit again using action listener for all them and for cut copy paste edit options as well for background and foreground color and for color for undo Redo for everything it all Remains the Same and then I’m implementing the action listener class to invoke that method correct like for undo and redo and similarly for file name Untitled for select menu everything so whatever the options we have seen here they all have to implement the action listener class so you can see I’m detecting save else what happens the action will not be detected you can see again for exit as well for read file everything and even cut copy paste for everything we have to use action listener classes even the size class implements action listener like for size 10 size 12 for 14 16 18 similarly till 28 that’s all and then I’m extending an applet class and implementing the action listener even for this in bold I want corer font everything and even in plane I want the same thing so as you can see if I type anything here so it is by default corer correct so that’s what is here that is in get action command in bold plane and italic whatever it is the first thing is corer correct and then comes the type that is times Roman helvetica corer aial Black Century everything and then again I’m am choosing the color that is the background or foreground colors and then I’m implementing the main method and setting the size of the text editor to 800 and 600 so that’s how it works like you can perform any operations on text editor and do rest everything now let’s move further and see the sign of form which is developed us using surf GSP and web development tools like HTML CSS Etc so I’m just going to create a basic sign of form and all that you need is servlets Java server Pages Apache Tomcat server and cascading style sheets and eclipse for Enterprise Edition and it’s very easy to develop as I’ll be showing you how so first let’s run the output and check and then I will explain you the backend code make sure that you run on server my Tomcat server is starting now so this is the sign up form that we have created you can enter the name I’ll give some email like 13 or older is my option so here in the sign up form you can see your name email password your age I’ll give some biography like I am a footballer singer swimmer Etc like just my Hobbies I can give my education everything you can give like it’s not mandatory that it should be the same thing and the job role have so many options in web mobile business and others so I’m very interested in iOS Developer so I’ll give that and interests are in development design business everything and when I sign up it says hi Cris welcome to Eda because the sign up that I have done got saved so where will be the output like or where you can see the details that you have entered in the back end in this console tab you can see the details that you have entered that is your name your email ID your password your over 13 your biography your job role your interest Etc so that’s all was there in the form so you can see here in this form these are the basic information that is being given so now let’s take a look at the backend code in the sign up I have created five files like HTML for creating a form CSS file to add some beauty or makeup to the form that we have created we have seret class files like request post form and person one. Java class and then to retrieve the data from the servlets we have the JSP file and also we have the web.xml file to add the mappings to the serlet and we have JSP file to retrieve the data from the servlets so for this front end that is your sign up

    form we have used HTML you can see here that I have linked with CSS as well that is for giving some makeup to the file that is you can say beauty to the form that you have created I’m giving form action as request post form and Method will be post so here you can see in the label you have created like name email password age your under 13 or above 13 whatever it is and then for your profile or your biography you have created one more label tag and giving the text ID is equal to bio and name is equal to user bio and for the job roles there are so many so you have created a first label for job rooll and the first opt group label will be web in web you have so many options and again you are closing that and opening one more op group label that will be your mobile your business your SEC your other so same things and then for your interest like this one you can can see you have check boxes over here correct for that check boxes we have given the Class Type value everything like for development for design for business everything and last it will be the submit button that will be your sign up so this is how your index.html file will be and now coming to main. CSS file for each and everything I have given the paddings like the font family the color the maximum WID the margin background everything even for the first thing that will be the H1 I have aligned it to Center you can see here I have aligned it to Center and that is an H1 even for that I have given the specified color and the F family as well and coming down for form as well and for all these things I’m using a select type for background border font size height margin outl padding B color everything even for the Box Shadow as well you can see there’s a shadow for this box it’s not just a simple one and even for the check boxes for buttons that is present as well for field set for legend TXS for label for number TXS everything so this will be your main. CSS now let’s take a look at the serlet classes so first what I’m doing here is I’m extending a HTTP serlet class correct and I’m using a do Post method and declaring parameters for request and response and I’m requesting all the parameters that is your username email password age biography job and for your user interest again the same thing and then I’m creating a object of person and trying to retrieve all the details and then I’m trying to request and set the attribute of my person and then using the dispatcher I’m trying to request the get request dispatcher from JSP and obviously in the dispatcher forward you will be having a response and request both of them so as I have created the object let’s see what was there in the person in this it’s nothing but it will retrieve all the details that is I have made everything as private because I want it to be a private to the person class and this class is called as a being class I’ll tell you why I have made a Constructor of person one and then using the parameterized Constructor I’m trying to reference and retrieve all the details you can see like for get name method I’m returning the name and set name I’m retrieving again for get email and set email methods for get password for get dat set AG for Bio job roles interest everything this is nothing but uh defining a Constructor and retrieving the details and request post form is essential to send a request and response and then person one. Java is essential to retrieve the details and then as I have told it is requesting a dispatcher to login one so in the login 1. JSP class I have imported the bean class that is edura person one why because edura is my package and person one is my class and then I’m giving the scope as request and similarly as I have imported the bean class and similarly to redirect it to the next page I have used a small icon and you can say that it says welcome to urea so this is all about the GSP and then now coming to the last file that is web.xml you have to add mappings to the file you can give serlet name like anything but make sure you give the serlet class name very properly that is it should be like edura that is your package and your request post form which is your class name this should be very correct and then for URL pattern that is request post from URL this should be same as the one which you give in form action tab that is your request post form URL or else it will result in an error so this is all about the sign up F I hope you understood how it works so let’s just start with something known as the basic questions which are asked to the candidates in the entry process so the very first is the difference between three terms that’s like jdk JRE and jvm so as a Java developer you must have a fair knowledge what exactly are these three terms right so guys let us understand now so Java virtual machine is basically an abstract machine it’s a software which is already provided by the platform so it provides the runtime environment whenever you are writing the Java source code it gets compiled into the bite code so jvm is that there which is going to execute your bite code now other than that you got JRE which is a runtime environment now it’s basically where JV is going to use the JRE so JRE set of libraries required by the jvm in order to execute your code jdk is one development kit required by the Java developer so it consists of various apis for you through which you can write your code so just for an instance right so jdk will contain your various packages coming into uh for example java. iio java.util all these API is the set of Library the information that comes from your Java development kit other than that it has various tools also available for example Java and Java C right so Java C is a tool which is used for compilation whereas Java is for the execution of your bite code so these tools are also part of jdk so let’s switch on to the next question what is synchronization this is one of the hot favorite questions whenever you talk of threads so we do have this term known as synchronization so synchronization is something where multiple threads if they going to access the same object right so there is only one resource which multiple threads they want to access you need to come up with something known as synchronization so guys what is synchronizations here we’ll take up one example let’s say we want to book a movie ticket and it’s going to be one seat which has to be booked by multiple people right so let’s say one corner seat in the last row has to be booked by multiple people so multiple people over the web will treat them as multiple threads they are looking onto a single object on a single resource that’s like the last row last seat right so whosoever will first of all try to block that seat will be given an excess and no other person can thereafter block that seat so synchronization is very much line to this concept when you got multiple threads which are going to work over a single object you need to use a keyword known as synchronized with the help of which you will be able to acquire the locks on your objects so synchronization is a process which going to keep all the concurrent threads in the execution to be in a synchronous mode one after the other the lock Acquisitions going to come up into action synchronization will avoid the memory consistency errors due to any inconsistent view of the shared memory let us understand the difference between processes and threads now so synchronized word came up and we started off something known as thread so let us understand what exactly is process and what is a thread now so guys in order to come up with process and thread let’s just have one visual coming in let us say you got this layer as an operating system right so we’ll say that this is one operating system it can be any OS now right it can be Windows Mac Linux any of the flavor so when you’re going to run the program what OS will do OS will create a process right so this process will be created by the operating system whenever you are supposed to execute your application so other than that what it does is it will all also give you some you know storage space where Ram will come into action right so further the ram can have various data structures coming into it for example you can have the data being stored in the form of stack or the Heap right so that’s like the storage concept let us say I got one program which I need to execute so whenever I’m going to execute my program so the running instance of your program over the operating system is nothing but it’s a problem process within the process we have one guy known as main thread so main thread is what this is the guy which will execute some instructions or you can say some sequential tasks which you mention in your main method right so whatever the statements you are writing in your main method they are nothing they are these tasks which are executed one after the other via main thread within the process so guys a process is running instance of your program over the operating system and a thread like a main thread is running within the process so we must understand threads are available within the processes and processes are running on top of operating system there might be a scenario that a particular task like I’m just going to highight this task over here so this might take a longer time right so let us say this particular task will take a minute or so because it’s going to fetch the data from the server now so in this context right so these three tasks they will be blocked right so when I’m talking about these three tasks the yellow States so they going to get blocked now so what we can do we can bring down one more thread and we’ll say that this is one user thread or child threat so we got various other terminologies for this guy right and will offload the heavier task over here of the main thread to the user threa in this way what we are able to do is we are able to Outsource the heavier task to some other trade and we will be coming up with a concept of concurrent programming that is what we want to achieve now right so let us understand what has happened over here guys so let’s see this part now so process and thread they are two different concepts but we must understand now any executing instance of a program on top of your operating system is nothing but it’s a process so on operating system we got multi-processing whereas thread is something which is a subset of the process now so within a process you got multiple threads so multiple processes on OS level multiple threading on process level when you talk about the communication so one process when it wants to interact with the other process we call the processes as interprocess communication where threads within a process they can directly interact with each other when we talk of the control statement so processes can only EX exercise control over the child processes whereas threads can exercise considerable control over the threads of the same process any change in the parent process will not affect the child process whereas if there is something where the main thread is getting affected the other user threads or the child threads they might get affected if you talk of the memory structure so processes they run in the separate memory space each and every process will have its own memory space space whereas threads share the same memory space which is being allocated to the process by the operating system so guys once again process is controlled by OS whereas threads are controlled by the programmer in a program right or you can say by the process itself if you talk of the dependency level processes are independent where threads they’re going to get dependent because if you can notice this image right over here so we created this user thread and there is a dependency that this task has been outsourced to this user thread by the main thread so dependency of the main threat over the user threat relies and vice versa right so it can be based on our Logics even so let us move to the next concept now so the next fundamental is what exactly is a repper class now this is also one of you know the hot favorite question which is always asked what is repper class what is meant by the term boxing or the auto boxing so let us see this part guys so repper classes they are the way where we can convert the Java Primitives into the reference types that’s like the objects so each and every primitive type has a repper class defined and it’s in by default they are available in java. L package you need not to import any package so for Boolean we got Boolean right for car we got corrector and for INT we got integer for double so on and so forth guys so repper classes are the means by which you are able to convert your Primitives into the references so let us understand what exactly is this conversion of Primitives into references let us say I got this i as 10 so we call this guy as a single value container because I can contain only one value it’s not an object now it’s a primitive type you want convert this primitive guy into an object you say integer I sign new of integer and you mention this guy I as a part of Constructor so what we have done we have boxed so it’s like constructing the object now constructing the object so that’s what we have done guys over here right so this particular statement over here is known as boxing on the other way around when you say in J assign IR do int value so this concept is known as unboxing right extracting the value from object so you must understand this concept over here boxing versus unboxing which is achieved with the help of rapper classes other than that you can also say integer SCF assign I so this is known as autoboxing right so this instruction is translated internally by the compiler as in integer KF assign new of integer where we got this guy known as I right so this is auto transation you need not to write the whole statement so you just mention the partial statement or the implicit statement we call call it as autoboxing and if you write down let’s say l assign K right so this is known as Auto unboxing so important question again what is boxing versus unboxing and thereafter what is auto boxing versus Auto unboxing so the major reason why we do boxing or unboxing is to convert Primitives into the objects now if you’re talking about objectoriented programming structure right so we are always thinking of objects now so if you are able to convert Primitives into the objects it means that you are strictly and truly following object oriented programming structure so we got one way of doing it and now you can also pass by reference The Primitives so that’s one more uh way of coming up like why you do a boxing part so we can pass the variables by references now right because here you are getting the references to the objects all right so let’s come back now to the next question number five that’s like what are the keyword final finally and finalize and what is exactly the purpose of it so there are now the three different keywords right so even the final term is something which means the last thing but they have a different meanings in different context now now final is a kind of a constant so if you mark a variable as final you can’t change its value so here if you can see a very small snippet right so a is 1,000 and you try to change its value the compiler will not allow you to do so so final is a keyword where you are able to mark your variables as constant you can also Mark your classes to be final in that context you cannot inherit from that class you can also Mark the methods to be final in this regard your methods they will not be overridden so final can be used with three of the concepts final as a variable final as a class and final as a method finally is the other context where we use it with the exception handling techniques now so what exactly is the place where we will be coming up with finally so many of times when you are writing the exception uh hand code with a try and a catch Clause there might be a scenario whenever the exception will come the statements mentioned within the tri block they will not be executed below the statement where the exception will come right so let’s say there are 10 instructions in the try and on the fifth instruction in the try you get an exception so below 6 7 8 9 and 10 instructions they will not be executed you need finally block to mention such instruction which must be executed either exception comes or it does not so finally is that piece of block which will be executed whether the exception is coming or it is not coming for example if you want to close the database connections now exception is there or not but we would like to close the connection at any cost right so you mention all such statements in your finally block so the next part is finalize so guys finalize is a kind of a Destructor so whenever the object will be removed from the memory by the garbage collector so this finalized method will be executed so you can explicitly try out this example where you can say system.gc right and you need to just mention your references to be pointing to the null and thereafter your finalize will be executed so we can just have a small example on this right so what I can do I can just demonstrate this so let’s say we got this class known as finalize demo right and I’m just going to make this method finalize over here so I’ll say ciso object finalized right so here we go now what I’ll do I’ll create the object of finalized demo so I’ll say finalize demo FD reference assign new of finalize demo so here we created an and thereafter I’ll say the ra to go as null it means it is not pointing to anything now so later I’ll say system. GC so GC is called to the garbage collector and it’s going to destroy the objects which are no longer required so now you can see over here so let me run it as a Java application it says object finalized why is it coming because it’s acting as a Destructor call so anything which you want to do before your object is removed from the memory right you can write it into the finalized Method All right so let’s go to the next concept it’s a difference between string buffer and string Builder right so before we jump onto the string buffer and string Builder we must understand they are both similar Concepts when they are compared with the string class so string is is immutable version whereas string buffer and string Builder they are the mutable versions right so let me Define this part what is meant by mutability versus immutability consider you got this string sdr1 which is a new string having hello and you got this one more guy known as string Builder you say Builder sign new string Builder and you mention hello similarly you say string buffer let’s take this guy as buffer you say buffer assign new of string buffer again hello so I have taken up these three strings let us say St Str Builder and buffer and now what is next I will be appending the data in these strings now so you say St str. concat so in string you need to say the function function as concat so I’ll say hi and similarly let us concat it into the buffer and the Builder so I’ll say Builder do append so in the Builder the function which we use is append and same goes with the buffer so buffer and Builder they are quite similar now later when I’ll do a ciso on St Str and similarly the Builder and the buffer part let us say Builder and then finally the buffer so the buffer here we run the code you see one major difference over here is that you get hello so nothing happens when you concat the data into the SDR right but in case of Builder and buffer the data is concatenated this is why because strings are immutable whereas buffers and Builders they are mutable this is also one of the very B beautiful query first of all so guys buffer and Builder they are the mutable sequences whereas string it is immutable you cannot change it even though you are going to perform an operation so what is happening over here whenever you concatenate the data you will be getting a new string right so you need to store the data into a new string so concatenation results the data coming out as a new string the old string string is not changed so significant difference between buffer and Builder now we’ll be discussing string buffer operations are thread safe so it means that by default when you are going to use buffer it will be synchronized you need not to worry on top of multiple or concurrent threading now whereas Builder it’s not thread safe string buffer is to be used when multiple threads they are going to work on the same string whereas Builder is supposed to be in a single threaded environment other than that Builder is quite better as compared to buffer over the performance part because there is no synchronization overhead so you can just try to write out this nippet over here which will be able to help you to come up with the timing difference and you will be able to see that Builder will outshine the buffer in terms of performance all right so let us understand the difference between Heap and and stack so stack and Heap they are two memories which are very much famous when you talk about the Java runtime right so Java runtime the ram we got these two major data structure stack and he so first of all let us see how this stack and Heap uh will come into action right so let us take one example guys so I’ll just remove this Snippets all right so let us understand the stack and Heap into action when we are talking about about the ram allocation so this Ram will be divided into two parts the first part is the stack and the other part will be the Heap so this circle is representing the Heap memory so both of them are a part of ram now right so both the data structure they are part of ram we got stack and Heap so let us understand this point of stack and Heap how the data will be stored and where it will be stored I’ll just take up one basic example from the eclipse now whenever you will be creating an object so for example finalize demo I said FD ref assign new finalize demo this is known as object construction statement right so this is object construction statement so here what we are doing we are trying to create an object with the help of new operator and to be very much uh more precise I’ll take one class like point right and we’ll Define some X and Y as attributes within this class point right and I can have one function like show point which can just display me the data of point so I can say point is plus the value of x let us say a hyphen plus y right so that’s like a point now so how I’ll be creating the object of point now same way you created the finalized demo you say point P1 reference assign new of point so how this statement will be represented in the memory so guys for this statement to be represented in the memmory what will be going into the stack what will be going into the Heap let’s have a close look onto that part now P1 ref over here will reside into the stack like this right so this guy is P1 ref it will be created on some memory location so let us assume it’s 4,01 it will be a hexadecimal address but I’m just assuming it to be one address over here as 4,01 so this memory location this container P1 ref is created out over here what is next the next part is an object which will be constructed in the Heap which will have two compartments the first compartment is your attributes that’s like X and Y and the second compartment goes like the methods show point so this is like the attributes and the second compartment is for your methods now what is happening over here so this object has no name now right so this is having no name on the Heap you don’t have any name for this guy but you can definitely have an address over the M let’s say this is 601 so this object is constructed at 601 so P1 one ref will have the address of your object and this guy P1 ref is doing nothing but it is pointing to this guy 60001 so we say T1 ref as a reference variable because it is referring to the object available at 60001 it’s not a kind of a pointer now right in order to prove this uh prove this concept we can just say C out of P1 ref when I will do a sis out of P1 riff let’s say P1 riff is plus the value of P1 riff now I’m going to run the code you will understand that P1 riff over here is showing me some address of an object of type point right since we got in the package cod. Eda so it says that code. edao at memory look so this is the memory location 7852 e922 which P1 ref is holding for your object so now once we are good to go what is available in stack what is available in Heap for this instruction right so guys anything for which you use the new operator that will be constructed in the Heap so Heap is that memory location where we use use the new operator and new operator is used to create the things dynamically when I use the word dynamically it means at run time it means anything which is constructed dynamically at run time in your program it will reside in the heat right so that’s what the new operator will help us to do now let us have some more differences between stack and heat so guys stack memory is used only by one thread of execution whereas Heap memory is used by the all parts of the application if you talk on the excess level objects stored in the Heap are globally accessible whereas stack memory cannot be accessed by the other threads memory is like Leo whereas the Heap memory is basically the tree structure now right so the memory management is based on the generation Associated to each object so here what we try to store the data is in the form of ke value pair so each and object will have a hash code now so that acts as a key for your object then you talk of the lifetime so we got existence until the end of execution of the thread whereas Heap memory will live from the start till the end of the application execution and your garbage collector can anytime free this m space if you talk of the Usage Now when an object is created over the stack so now please guys in case of java every object is dynamically constructed so there is nothing like objects being constructed in the stack right so we are just giving a general overview of Heap and stack over here not typically inline to your Java these are the general differences now in Java your each and every object will be constructed dynamically in the Heap space not in the stack space so in the stack space you will be getting the references to the objects now right so guys whenever an object is created it is always stored in the Heap space and stack memory only contains the local reference variables which are pointing to the objects in the heat so let us move towards the next basic question that’s like the difference between the array list and a vector so these are the two data structures these are the two collection apis in the Java do util package so both of them are quite same the very major difference is that array list is not synchronized whereas Vector is synchronized so guys when your data structure is not synchronized so the performance will be a bit more better as compared to the other one so that’s why your RLS will behave faster in terms of performance as compared to your vector if an element is inserted into the RLS it increases the size by 50% whereas Vector they don’t do it so but they just double the the size of its array right and rs does not define the increment size whereas in the vectors you can Define how much size the vector should increment when it has reached its limit other than that rlist can only use iterator for traversing whereas in Vector right except hash table Vector is the only other class which can use enumerations as well so you can enumerate over the vector with the help of enumerations we can also you know iterate within the vector so that’s that’s like some of the differences which are highlighted over here similarly the other collections uh hashmap and hash table so this is again a relevant question which is asked in the interviews many of times as a basic question so hashmap and hash table again the first difference is the synchronization right and your hash tables they are synchronized whereas hash Maps they are not synchronized hashmap allows a null key and a null value whereas hash table will throw a null pointer exception if you’ll try to add a null key or a null value other than that since a hashmap is not synchronized it’s going to behave faster as compared to the table and we can make the hashmap as synchronized by calling the collection synchronized map API so it’s not like that we cannot Mark the hash M synchronize we can come up with our own Logics as well right so guys hashmap Traverse can be done through iterator whereas table can be enumerations as well as iterator hashmap will inherit abstract map class whereas hash table is totally working on the dictionary class now the next concept is the difference between equals and equal to operator now this is one you know as a new Java developer many times we’ll do this thing we’ll do this big mistake by comparing the strings with the equal to operator so unlike your other languages here you need to use the equals method to compare the strings now right so guys let us understand this concept first of all I’ll just try to demonstrate it by writing one example so let us say you got one string s Str one as new string so just recently we had this discussion that this is an object construction instruction so s Str one is a reference variable whereas the string object will be constructed in the Heap so St str1 is having one address right so let me write down this thing Str str1 is a reference variable it is having the address of an object similarly I’ll create one more Str str2 right so Str str2 is also a reference variable it is having the address of some other object the difference over here which we need to understand is that there are two different objects which are containing the same value hello right so objects are containing the same value hello and S str1 and S str2 they are the two different references and having the different values so that’s why if you’re going to compare it using equal to operator right so it’s going to say Str str1 let me just finish out the program and in the else part I’ll just say not of equal to right now you will observe that s str1 is not equal to Str str2 the reason is very similar because you are comparing references now so double equal to we are comparing references right so that’s one important difference for us to understand now when you need to compare the objects you don’t use double equal instead you use this method known as dot equals right so you say let us compare the strings using equals method so here I’ll say equals and not equals so we don’t compare strings using the equal to operator that’s very risky it’s it’s one big mistake you compare the strings with the equals method equals meth method is not comparing the references it is comparing the values within the objects right so that’s what we are able to understand comparison of references versus comparison of values so you can take up this program guys over here if you can see right just go ahead and try to run this execution we got one more program over here let us predict the output for this program so in the main method you are calling the method one with the input as 11 so you pass this 11 over here from here you are invoking the method two by passing 11 into 11 and in the method two you are passing method three which is division of 11 and then in the method three you are subtracting 11 and finally in the method four you are adding of 11 so guys finally we’ll be getting the result as 11 itself right because 11 11 into 11 it’s going to be 121 divide by 11 it’s going to be 11us 11 it’s going to be 0 + 11 it’s again going to be 11 so try out this program right and see to it if you can get the same output or not so these are some of the basic questions right highlighted by us which are very important and crucial from the interview perspective next we’ll be jumping on to the objectoriented programming structure now this is one key area which company or an interviewer is looking and uh expecting as a developer you should be quite good on these Concepts because the advanced concepts or any of the application development model it relies heavily on object oriented programming structure so let us see what we can have in the objectoriented programming structure so the very first question as in question number 12 is the difference between abstract classes and interfaces so let us see some of the differences again guys this is quite theoretical information right uh but I would like to take one very small demonstration on abstract class versus interface because it is very important to have a very fair knowledge and this concept is linked with your runtime polymorphism so let us understand this concept so I’m going to create one class shape and we’ll have this uh method known as a draw right so let’s have a draw method and you say see so drawing a shape now this is something which even we teach in the traditional language like cc++ I mean Native languages so this is the same concept carried forward we got a shape class and we got a draw method so what you going to do you’re going to create the object of shape as assign or let us say shape s and then say s sign new of shape and then you can say s do draw so the output is very much simple you get the mathod drawing a shape but I want my shape to be be either as Circle rectangle or polygon right so what I will do I will just come up with a class known as Circle so I’ll say this guy’s Circle shall extend something known as shape right and in a similar way I’ll also try to come up with something known as rectangle and lastly I’ll say a polygon so shape has three children now and each and every child will be redefining the draw method with the respective shapes right so here we are now this is very well understood that whenever you’re going to redefine the method so the concept of overriding will come into action right so this is overriding and now if you say Circle C and C assign new of circle and you say c draw you will always get drawing a circle because overriding has come into action what I want to do I don’t want to do this concept right it’s it’s a basic concept now that whenever you’ll create the object of child always the definition of child will come into action as a concept of overriding what I want to do I want to say reference variable belongs to the parent and the object belongs to the child now this is known as polymorphic statement so how it is a polymorphic statement now the guy shape s is pointing to Circle so shape is now behaving as Circle let us assume that now this instruction is equated it’s very well equated the equation is true reason is that circle is also a shape circle is a child of shape so technically their type is same now right so I’ll say s do draw so I’m saying s do draw what you’re going to observe is you get drawing a circle now which is very well true because there are two definitions One belongs to the shape other belongs to the circle and when you say s do draw you’ll be getting drawing a circle so you will be giving the preferences to the children over here and the parents definition they again going to get overridden what I’ll do now I’ll say s is now a new of rectangle right you say s do draw and then you say s is new of polygon and then you say s do draw so every time you are able to achieve s do draw drawing the different different shapes right so this is what we call as in runtime polymorphism the same method draw over the same reference variable is we are able to draw different different shapes dynamically at runtime so guys this beautiful concept is known as runtime polymorphism right and what we need to understand from here is that the guy draw in the shape method is useless having this concept over here that s is a new shape so having the object of shape and executing this guy s do draw makes no sense it’s not a pretty good sense right drawing a shape makes no sense shape has to be Circle rectangle or the polygon so what we need to understand from here is we need not to have the object for this class and we need not to have the definition for this guy draw so you can change the architecture of your program and you can bring down one more class shape mark this guy as abstract and mark the method Within your class also as abstract so an abstract class is a class for which you cannot have objects now you can’t create the objects right so here you can see it’s an error other than that the method can also be marked as abstract which means you need not to have definition so guys when a class is marked as abstract you cannot create the objects but runtime environment will create the object right so see so I say shape is constructed very very important difference which I’m going to highlight today so when you say the Constructor over here right so you are able to create the Constructor it means the objects can be constructed for the shape but you cannot create it runtime environment will be able to create that you cannot create if you will try to create create it it’s going to give you an error right so the same problem statement is solved drawing a circle drawing a rectangle drawing a polygon but before the construction of the child object the parent object is constructed by the runtime environment so we say this is object to object inheritance right so what is happening over here inheritance is happening here from object to object so the parent object is constructed by the runtime environment and then the child object is created so abstract class is a class you cannot create the objects but the runtime environment can do so and it can have abstract methods which have no definition so no definition for this guy who has to Define this guy the child has to mandator define the definition for the draw draw so if the child is not defining the draw method it’s going to throw an error so let’s try to see this so you try to comment out this code you can see now it is giving you an error so if there is n number of abstract methods in the abstract class you need to redefine them in the children now we can understand this part that this shape has helped us to improve the concept of runtime polymorphism but this is again which is like a parent is writing some rules which are supposed to be defined by the children now there’s a relationship known as parent and child relationship so abstract class shape is when extended by the circle it’s a parent child relationship for example the parent is giving is just making a rule that breakfast has to take place at 800 a.m. in the morning Now The Childrens they need to Define this Rule and they can come up with their own definitions okay we’ll come up with a breakfast at 8 A.M but I’ll have uh snacks I’ll have bread and butter or anything right so that’s like a parent and a child relationship and from basic shape class we came to an abstract class shape with some you can say there were some problems over here that we didn’t want the object to be coming up and we didn’t want the raw method to take place right so we achieved a better way of coming up with runtime polymorphism through abstract classes now I’ll come up with the best way so I’ll say one interface shape with the method as white draw so guys this is the best way to achieve runtime polymorphism now so what I will do I will not say extend shape but I will say Implement shape now this is the difference which we must observe over here so rather than doing an extension I am doing an implementation and in the interfaces by default the methods are public abstract so it is by default like public abstract wi draw and in the interfaces if you will observe now so this Constructor is significantly an error it means that neither you nor the runtime environment can create the objects of shape right so it’s an error right so for the interfaces neither you can create the objects nor runtime environment can create objects it means this is not object toob inheritance there is nothing like parent and child relationship over here what is the problem over here this is the kind of traffic police or the police department is imposed osing the rules on us to wear a seat belt and now we need to Define that rule right so traffic police is imposing a rule to follow the traffic lights and it is up to us that how we Define that rule so it’s not a parent and a child relationship kind of a concept it’s not parent object and the child object concept right I hope you got the example and you are able to correlate the fundamental between the interfaces versus the abstract classes now since this method is by default public so in order to redefine you need to always have a higher excess or the same excess right so this is how you have achieved one more refined way of runtime polymorphism right guys so what we have understood let’s come back and now summarize the whole Concepts so abstract class and interfaces there are the two different concepts but we can accomplish runtime POC morphism with both of them one being the parent other one being one implementation right so guys an abstract class can provide complete default code or just the details that have to be overridden whereas interface it will not provide any code so it’s just the signature there cannot be any definitions in the interfaces whereas abstract classes they can have the definition so we can only extend a single abstract class whereas a class can Implement several interfaces so this is not multiple inheritance it is multiple implementation Right Moving ahead now abstract classes can have even regular methods whereas interfaces they cannot have now the instance variables in the abstract class they can exist but an interface it cannot have any instance variables its variables are by default static variables right in abstract class is you can use public private protected so on and so forth whereas in interface by default the visibility is public or none right so it is by default public somehow if you mention nothing it is by default public now so here we can have Constructors here you cannot have Constructor it means that you don’t create the objects but runtime environment will create here neither you can create nor the runtime envirment can create abstract classes are faster as compared to the interfaces they slow because it requires extra IND direction to find the corresponding method in the actual class right so that’s what we got some of the theoretical differences after the Practical implementations so polymorphism I hope is now very well clear right so guys polymorphism means more than one forms where a mobile phone can serve the purpose of camera remote MP3 player and alarm clock so on and so forth right so polymorphism can can be characterized into two parts one is at the runtime one is the compile time so guys runtime polymorphism is where you are coming up with this parent and a child relationship again we saw this math example shape Circle polygon and rectangle right so what what happens in the runtime polymorphism you create a parent class and then you create a child class child class must override the method of the parent class and thereafter you do an upcasting by saying the reference variable of the parent can point to the object of child and whenever you will execute the method you’ll be able to see the method execution happens for your child so what is the difference between overloading and overriding so guys overloading is concept linked with a compile time polymorphism whereas overriding is linked with the runtime so in the definition part math method overloading means that the same method name should have different inputs or the different arguments right every time they must be different now so in method overwriting the signature should exactly be same so here return type will not make any difference but here everything should be exactly same if you talk of the behavior method overloading is basically adding or extending the methods Behavior whereas overriding is changing the existing behavior of the mathod now right so here we are trying to add the functionality here we are trying to change the functionality so compile time polymorphism versus runtime polymorphism different signature versus same signature and when you are talking of The Inheritance it may or may not need inheritance in method overloading whereas overriding is only linked with your inheritance so this is one significant difference guys if you can see right so this we have already observed the overriding part but in the overloading part if you can see over here the add method with the two inputs of type integer and two inputs of type double so this is one uh significant example right so guys uh this is like overloading and this is like overriding right so you can just I think this is done wrongly so overriding is this example overloading is this example all right so if there is any method which is private or static so can you just try to overwrite such a method so guys the answer is no you cannot do so so private method will not be inherited so it makes no sense to override it or to redefine it whereas static method it belongs to the class so you cannot override a static method right so it’s basically what we call it as in a class to class overriding which is known as hiding right so here the concept is known as hiding so if there is a static method in the parent class and if you want to create a method in the child class to override the static method it should also be static and that concept will be referred to as hiding now so what is multiple inheritance and does Java support it so guys multiple inheritance is one class extending more than one classes so this is not supported in Java so if you can see there is a diamond problem which comes into action that if there is a class A right and B and C class they are inheriting the a class and there is a Class D which is getting inherited from B and C so two copies of a will be coming into the last class so this kind of problem is not solved in the Java it needs the virtual Concepts to come into action since there are no virtual keyword or any other you know pointer support a in Java so we cannot solve this problem now right so Java multiple inheritance is not supported so one more query now over here right what will be the output of this program so if the parent is having this method F which is marked as static and one method bar which is a non-static method and there’s a parent child relationship where we are hiding a method versus overriding a method and you are executing these method calls right so guys the output will be so since if you can see over here so this parent. Fu and child. Fu then parent. barar and child. bar right so you’ll be able to get all these four outcomes I’m am Fu in super in child then child and then child right so just try to execute the code and get the behavior similarly we got one more program so guys this is where we got multiple Constructors and you created the object for the a so by default default Constructor will come into action but this over the reference function call Will execute the Constructor over here and this over here will execute the Constructor over here so you will get how are you then hello and then the height right so this as a Constructor execution will happen over here as a function call so you’ll get the output in the reverse order now right so one more program guys what’s going to be the output for the program so it’s basically one miscellaneous program where you got a block and a static block so guys a block is executed when you create the object of a class whereas static block is executed when the class is loaded into the memory so the idea is to Define you guys the role for the static block and a normal block so a block over here if you can see is executed when the object is constructed and static block is executed when the class is loaded into the memory so just try to run this program and come up with this output guys all right guys so now let’s understand seret right so this is where we’re going to pursue with the Enterprise Edition concepts of java so we have left out the core part of java and now we are moving into the advanced part of java so serx is also one of the Core Concepts when we talk of the Enterprise Edition of java so let us understand what exactly is a Ser right so that’s like what is a serlet so serlet is one Java program which is executed over the server now that’s like one very basic definition to what exactly is a server so what happens now whenever you’re writing an Enterprise application you need to have some code which is executed by the server so if the client is sending a request via HTTP or the https request will come to a server and the server will execute your Java program and it’s going to send back the response to the client now the client can specifically be browser or it can be a mobile application or any other kind of a client di right so Java serlet is a server site technology which will extend the capability of web servers by providing support for dynamic response and data persistence we got Java x. serlet and Java x.l. HTTP package which provides the various apis for writing the serlet program now any serlet program should implement the seret interface along with the life cycle methods where you can manage your cod snet as most web applications they are accessed using the HTTP protocol so we got a class known as HTTP serlet and we got a corresponding hierarchy for the same so over the web we use two of the major methods one is the get one is the post so what is the difference between get and post so guys get and post we got two major methods how we can send a request from a client to the server other than that we also have various other methods like put delete PR so on and so forth so these are the two important methods get is when you need to have limited amount of data which can be sent right because the data is sent as a part of URL now so post is when you have a large data and you need to send it across the body so it automatically comes up that the data is not visible as a part of URL and uh it is more secure in in terms of post request right so security is more because the data is not not exposed in the URL other than that you cannot can notot bookmark the post but the gets can be bookmarked we got item po versus non itm poent so guys what is item Port when you send a request you get a response you again send a request you again get a response and you compare the two responses whether they are equal or not right so it important so this guy get is more efficient right and it is more used than the post right where now it depends right so efficiency is like get is more efficient undoubtedly but it depends upon our requirement where you need to use what okay so let’s say you want to do a sign in so obviously we need to send the username and the password to the server and you cannot send it across the URL even though you can send it but you need to encrypt the data before you send it right so that’s like the differences between get and post now what is meant by the session management right so guys session is one term which means the time interval between the client and the server so we have techniques to manage the data within the session so that’s like the session management now so what are the various methods so number one we got the user authentication then the hidden form Fields Cookies URL rewriting and we got HTTP session API also to manage the session so session is a conversation State between the client and server and it can consist of multiple requests and responses between both of them now HTTP is a stateless protocol you cannot manage and maintain the state so that’s why we need to use some fundamentals through which we can come up with this right so guys every session will have a session ID which will be passed between the client and the server during the request and response and you can use various different techniques so to name few we have mentioned them right now we also have two apis known as serlet context versus serlet config so what is the difference over here so Ser context and config is where we need to extract the data which is stored somewhere as in part of your web.xml deployment descriptor so we will consider that part now so serlet config is a single object where serlet context is on a global level now right so it’s like local parameter associated with a particular serlet whereas we got a global parameter so both of them are the key value pairs right mentioned within the web.xml file whereas serlet config so you mention the data within the serlet whereas serlet context is mentioned out of the serlet tag in the serlet program you can use the API get serlet config and get serlet context and thereafter on the basis of the key you can retrieve the data right so for example shoing card of a user is specific to a particular user so you can use serlet config whereas to get the Mind type of a file or any kind of a global level or a a variable you can use the serlet context now what is a possible life cycle of a serlet now this is uh really important when you talk of servlets guys right so uh servlets they got five stages when you talk of the life cycle right the first of all the Ser will be loaded then it’s going to be in instantiated initialized then a request will be sent to a serlet and then finally the serlet will be destroyed so we got in it service and Destroy as the three life cycle call backs involved when you write the serlet program so you got three of the apis now init service and Destroy what is request dispatcher if you want to share the data from one Ser to the other Ser evenly right so we got this guide known as requ EST dispatcher which can forward the request to the other resource now this other resource can be possibly a serate or an HTML file or a GSP file and we can do so using the two different methods one is the forward method other one is the include method so what happens over here is when you send out the requests from the seret one to seret 2 when you use the forward method response generated from the ser let 2 will be sent back to the client in case of the include method response from the serlet 2 as well as the serlet one will be appended and then sent back as a final response to the client now we got request dispatcher coming up with the forward and include in these two differences so guys one of the important concept associated with the ser session management is cookies right so what exactly a cookie is so cookies are the textual data which gets stored on the client machine and this data is sent from the server so data is stored in the local machine of the client guys let us see this part right so if you can see over here I’ll show you this thing so when you open down the settings of your browsers right and you try to say cookie right so if you can see over here so you get this options of cookie coming up over here content setting you can see cookies so allow the local data to be set which is evenly recommended so guys cookies are the textual data which gets stored on your machine and you from the server can just use the method known as get cookies right to read out all the cookies and you can create a cookie by using the APA cookie itself it’s a hashmap key value pair cookie C1 assign new cookie with the key and the value right and if you want to add the cookie to the client’s machine you just call the method add cookie over the response object so the next part is the Java database connectivity so guys this deals with the database connections now right so Java database connectivity we got the first thing as jdbc driver so whenever you want to create a connection you must must have a driver right so guys driver is the layer which will help us to interract our jdbc apis with the database so there are four major types of drivers we call them type one type two type three and type 4 driver it goes like jdbc odbc Bridge driver native API driver which is a partial Java driver then if you want to come up with a client server model you got Network protocol driver and lastly you got got the pure kind of a driver thin driver the fully Java driver which will’ll be using to interact directly with the database so Java app it’s going to use the jdbc API and the jdbc driver manager will interact with the driver and drivers will further interact with the drivers for the databases libraries and so and hence this whole channel of communication will be established so what are the various steps to connect to the database in Java we use jdbc and there are some sequential steps which you need to perform so that we can perform all the crude operations so what are these now so there are five sequential steps which you need to perform so guys any of the database whichever you are using right so you need to come up with the documentation over their website right uh what is their driver class name what is the URL so on and so forth anyways let us have a look on to the snippet now so the first one is registering the driver which comes through the API known as class. forame so here you manage to write the driver type for driver or any other driver which you are going to use then you need to create the connection which is created with the help of an API known as driver manager so you say driver manager. getet connection we need to pass three things over here the first thing is the URL where your database resides so if it is on the Local Host you mention the host name to be the local host and you manage to write the port number and the database name then the username and the password for your database thereafter you need to say create statement over the connection once you have created the statement thereafter you’ll be able to execute any of your SQL query but in the finally block you must close your connections right so this is important that you manage to close your connections regardless or whether exception is coming or not coming so what are the different jdbc API components so guys we got various interfaces and classes coming into the Java jdbc package so we got java.sql package and many of the libraries if you can see the apis are mentioned over here so in the interface part we got connection statement prepared statement result set result set metadata database metadata and callable statement so all these are the interfaces so connection is used to have a connection statement to execute the SQL statements prepared statement is also used to execute the SQL statements but prepared statement is different from the statement in terms of how you are going to substitute the data into the SQL statement so here we use something known as wild card correctors as question mark right result set is the retrieved data from the database and the data about the retrieve data is known as result set metadata and the data about the database is known as database metadata callable statements are used so that you can execute the stored procedures of your databases and some of the few classes which are mentioned in the right hand side it includes driver manager which is used to get the connection so Bob and clob are the two apis where you can manage the binary large objects and the character large objects so binary large object means the audio files the video files right whereas clob means the textual files then the type will Define what are the various types SQL exception is exception in the jdbc if there is any connectivity issue or any other syntactical issue or any different kind of SQL issues which going to occur at one time so SQL exception is the class to get the error from now what exact a jdbc connection interface B right so guys the connection interface is the one which will maintain a session with the database so here we can uh use the transaction management logic which means Atomic City so Atomic City means that all and everything should happen at once so let us understand so connection is one important interface with the help of which we can manage the transaction for the transactions let us assume I want to transfer the amount from one account to the other account so there needs to be two possible SQL statements which are supposed to be f one will be the updation in my account that will be deduction of the payment in the other account again an updation query which will be the addition of the payment so these two queries should be fired at once and if any one query fails the other query should be rolled back so for the transaction management V are the connection you create the statement and thereafter you can come up with the autoc commit API where you can mark it as true and then you can use the apis like commit and roll back to manage your transactions so close is a method where you are able to close the session with the database right guys so there is one more possible difference between three of the apis that’s like execute execute query and execute update so guys execute query execute update and execute these are the three different apis all the three apis are used to perform the SQL operations over the database but query method is always focused to do a retrieve operation if you can see now select operation right so whereas your execute update method it’s going to perform the DML and the ddl operations insert update delete create an alter of the table right whereas execute method it is able to perform any kind of operation now so this is typically used to retrieve the data here the data can be modified whereas execute method any kind of SQL statement return type of these methods they are different now so result set will be returned from the execute query method here we’ll be getting some integer output and here we’ll be getting some Boolean output this method is used to execute only select queries so non- select queries and here both the select and non- select queries right guys so that’s like the jdbc part right so how we got various apis available in the Java database connectivity but we need to come up and understand there are the five different steps so you start from loading the driver then creating a connection writing the statements executing the statements and finally moving on to the closing of the statements so the next part is the framework of Frameworks that’s like the spring framework so if you know this if you have a hold on your spring framework guys so it’s like you are done with almost everything now right so one of the most important framework in the Enterprise Edition of java let us see what is spring framework so what exactly is spring guys so spring is

    an application framework which focuses on a concept known as inversion of control for the Java platform so many of the Great Technologies they are built looking onto the architectural model of the spring framework even the Android how the UI part is linked with the layout part so that concept is again adopted from the spring pattern right so it is one of the pattern which focuses on ioc that’s like inversion of control so the framework core features they can be used by any Java app app for building an Enterprise Edition application one of the major advantage of writing a spring framework app is it’s lightweight it is having an integrated framework architecture where we can use it to develop any kind of an Enterprise app in Java right so it’s less on a memory it’s high on performance and it contains various Frameworks available within it through which you can write a multi-purpose Enterprise application so guys what and all are the modules available in the spring framework now so spring framework has various modules to start with we got the very first layer as the core container if you can see this core layer so whole of your spring framework is dependent on this core layer so this core layer focuses on something known as inversion of control and dependency injection so we got this as spring context dependency injection then aop is aspect oriented programming which focuses on how we can fulfill crosscutting concerns then the database module of the spring framework includes Dow jdbc and orm as in the design patterns so Dow the data access object so here we can write the Dow patterns to access the database we got jdbc support we also got the hibernate or the OM support which is object relational mapping the web module of the spring framework can help us to write the web applications where spring MVC is one of the majorly used Frameworks in the market now so model view controller where model represents the data container view represents the UI or the presentation and controller represents the business logic as in seret now right so so spring MVC is one of the very important concern when it comes to develop the web applications and we got various web services coming out in this module itself let us move on to some annotations which are used in the spring configuration so guys there are various annotations now which are used in the spring framework now at theate required right so it’s like what is the input which is required Auto wiring for your dependency injection what happens pre- destroy what happens post construct right so before the object is finalized just after the object is constructed what is the resource what is the qualifier so these are some of the spring annotations which are used for the configuration purpose so what is Bean in Spring and what can be the different scopes of The Bean in the spring right so guys I’ll take up one very uh a basic example over here to mention this concept right so let us take one example so I got this spring demo available with me with all the jar files available out here we got this employe bean. XML file so just give me a moment right so all right so here you can see now we got this employee beam so this is one XML configuration for the spring framework so we got cod. ed. employee as a class right and here what I able to do is to define the property value tags for my B right in the employee. Java I can say it’s basically a bean or a pojo so what is a bean class Bean class is a class which will have the attributes along with the setter and the Getters right so all the setter get methods are also there in my client class what I’m going to do I’m just going to use this spring container and thereafter I will just extract my employee object right so just let me do this part all right so I got the reference of the employee bean. XML and in my class I got this mban one so I’ll just say m being one and thereafter I’ll do a ceso of M right so let’s try to run the code and you can see that the data over here is coming up as an ID name and salary right I have just over writed this two string method out here so along with this I’m also supposed to do a super do two string right I’ll do a back sln and a super do two string so now it will show me the data within the object as well as the reference variable m is pointing to the address it is showing me the address as well to the object now so the bean is extracted from the spring container right so there are various Scopes available now for example same MB one in my client if I try to get it again right so let us try to say get of bean again right as in M1 and M2 let us say this is M2 and this is M1 right so I will closely observe one difference I mean one similarity that every time when you request this guy get Bean for the mban one you are able to receive the reference to the same object scopes of the beam can be mentioned over here using attribute known as scope and here now I’m going to mention it as prototype you can see we got this guy as a prototype now when I run my code again you’ll find one significant difference that here the reference is coming out to be different it means now by default it was giving me the singl ton as a design pattern but when I change the scope to prototype every time I am requesting the object of M being one from the spring container it is now constructing a new object and returning it back to me so guys this is what we got as in what can be the scope of your being in the spring so inversion of control container can have various Scopes now single ton means only single object which is by default so prototype means you can have every time a new object request means one object per entire request session means one object per entire session and Global session means one object per entire Global session on an application Level so how is a being added to a spring application so guys you use this tag known as be you mention the ID and then you can have the properties as in key value pair right so what is the role of dispatcher serlet and context loader listener so guys dispatcher seret is acting as a front controller in the spring MVC so many times I will call it as a receptionist now so what happens any request when it’s going to land up to your web application so this guy dispatcher serlet will dispatch the request to the corresponding resource available on your web application so it’s it’s going to act as a receptionist in your program now whereas context load a listener it’s a listener which will give you the event call backs when the context will be loaded it’s like startup and shutdown of the web application context in the spring route now what is the difference between Constructor in injection and Setter injection so before you come up with the Constructor injection and the setter injection you must understand what is dependency injection so guys uh let us understand this flow once again I’m having one class as employe right and there is one more class known as address so employee can have the name employee can have some salary there will be definitely an employee ID and employee can also have an address right so I’ll just say an address to be as adrs so what we can do we can create one Constructor of an employee in this way right and here you can say Eid goes like 101 name goes like let’s say John salary goes like 30,000 and address goes like some new address right where address can have some address line then you can have some City you can have a state and lastly we can also have some kind of a zip code just mentioning some parameters over here now what will happen over the client part you will be writing employeee assign new employee so whenever you you are creating the object of employee this becomes the concept that the Constructor of the employe will create the object of the address we can see a significant dependency now when you are creating the object of employee within the Constructor of employee the object of address will be constructed we say this concept as high dependency or you can say we got a higher value of coupling now we need to reduce it right so you need to bring it to the lower level so you need to take it as a low coupling so what I will do I will not use this technique I will say let us create one more Constructor and pass the address as an input right and thereafter you can say address assign a or you can create a Setter you can say set address and you can say address and here you pass this guy so guys in these two approaches rather than having a single employee object you can now create an employee object you can create address objects separately right you need not to be dependent upon the employee object and later you can pass the address object or you can say employee e assign new employee and E dot set the address and you can pass this guy a so we want to reduce the dependency or we want to come down with the coupling parameter we created this logic out here so Setter injection and Constructor injection are the two terminologies linked up in order to justify these two terms now right so let us open up our presentation once again and look on to Constructor injection versus seter injection so there is no partial injection so seter injection can lead to partial injection here we need not to override the setter property but here the Constructor property in case both the things are defined so you can create new instance if any modification occurs so you need not to create any instance if there is a property change so better for too many properties better for few properties so guys depends upon your choice but Constructor and seter injection they are the two key Concepts to bring down your dependency to the lower levels now what is auto wiring in spring so many of times when we are writing this dependency injection programs you can perform these injection programs based on the names right for example you can mention this auto wirring tag and you can say by name so you need not to now write an explicit injection logic it will be mapped automatically for you so there are various modes through which you can have an auto wirring coming into action so no is the default mode it means you don’t specify the autowire it means here uh nothing is enabled so Auto wiring is not enabl so when you mention by name it means you take the seter method and you map the data corresponding to the name by type will use the type of the attribute and Constructor will inject on the basis of the Constructor so how can we handle any exceptions in Spring MBC framework right guys so there can be exceptions now when you are writing the program right so spring MVC framework can help us to achieve robust programming concept through these possible ways Number One controller based so you can define an exception hander method in your controller class itself you can have a global exception hander where exception handling is is a cross cutting concern to aop right and then you can have a Handler exception resolver so any spring Bean which you have declared in the dispatcher serlet application context that can Implement Handler exception resolver which can thereafter be used to intercept and process any exception which occurs in the MVC system and it is not handled by the controller part so you can use the various different concepts out here if you can see add the rate exception hander annotation so that you can specify that this view will be used to display some arror all right so some important annotations again in the spring framework guys we got at theate controller at theate path variable qualifi configuration scope request mapping response body auto wired service and and aspect right so all these annotations they are quite important Concepts and you must have a fair knowledge on all these right for example at theate Auto so either you can configure it in XML file or you can use annotations so XML files they come up with the inversion of control concept whereas annotations you need not to have XML files you can use them directly all right guys so lastly in the spring framework we can also have spring spring framework coming up with the database connectivity either through jdbc or through hibernate or any other framework now right so spring and hibernate they can work together we have some om modules available within the spring framework and we got an API known as hibernate template so if you want to come up with the spring and jdbc you got jdbc template API right so guys spring omm module will help us to integrate hibernate framework into a spring application and spring orm also provides the support so that you can use spring declarative transaction management you can use annotations and you can perform the actions now so now we will be on our last concept that’s like the hibernate which is the backend framework based on object relationship mapping right so guys let us see what and all we got in the hibernate now so the 44th question is what is hibernate hibernate is an OM which is object relationship mapping it’s a framework now where you just mention your Java object and you forget about your database tables so guys what we going to do we’re going to write down some mapping files as an XML configuration files where you will be Mapp that this attribute in my object in my class will be the column name in the respective relational table so hibernate provides a reference implementation of the jpa Java persistence API right and it makes a great choice as an OM tool where we got the benefits of lose coupling now I hope you got the meaning of loose coupling where dependency has been reduced to the maximum level so hibernate configures all the flexible and can be done from the XML configurations as well as through annotations programmatically right so it it provides us both the ways now so what can be the benefits with the hibernate framework so guys hibernate will eliminate all the boilerplate code whereas in the traditional approach you need to mention and write various code Snippets and you need to write the relationship mappings the cache management everything is uh you know eliminated when you use hybrid now so this framework will provides us uh XML support as in through configuration files and annotational support through jpa that’s like Java persistent apis now hibernate provides a very powerful uh language that’s like hql which is very much in line to SQL but you need not to learn it it’s more simpler than the SQL even now SQL itself is very simple language you got more simpler language than the SQL that’s like hql so guys it’s an open-source project from the red hat community and uh it is used worldwide and it’s very famous especially for any large Enterprise application your hibernate framework is one of the ideal choices now now any database vendor specific feature hibernate is suitable because we can also execute native SQL queries so hybern is not just that we can use its native apis and you can’t do anything out of the box you got to execute the SQL queries also with the hibernate one of the most significant features of the hibernate is the cach management so hibernate provides three levels of cash through which your performance of the database operations they’re going to get improved now so what is the architecture of hibernate guys so hibernate of having an architecture in a very uh simpler fashion guys we got a database on top of database we got various you know uh modules coming in for example Java transaction apis we got Java database connectivity and thereafter we got j& di that’s like Java naming and directory interfaces on top of it we got the hibernate apis so configuration API will read the XML configuration file and it will help us to create a session Factory session Factory will be used to create the session and session is one API which maintains and creates a connection with the database using the transaction API you can use the commit and roll back features and query API will help you to create one query and retrieve the data criteria is one API which will help you to mention the criteria for example you got restrictions to you know manage for example greater than less than all equal to so all these are criterias when you are trying to retrieve the data in the Java application you just write a pojo class you just write a bean and you give this object to the hibernate and hibernate API they’re going to manage everything for you all right we got the get method and the load method in order to to perform the retrieve operation so let’s see the differences let’s say we we don’t have a record available in the database so load method will show an exception that’s like object not found exception whereas the get method will return a null as in the object is not found so guys get method will always hit the database whereas load method will not hit the database right in case it’s not there and you’re going to get get a real object not a proxy object whereas load will return you a proxy object so get should be used if you are not sure about the existence of instance now so let’s say that the record is existing or not I don’t know so you use get if you are sure about whatever you are going to extract from the database it is existing you can use the load method so there are now significant differences between hibernate and jdbc guys this is one of um the major query between you know as in the part of interviews so why hibernate and why not jdbc what are the differences what are the advantages that you should be opting for hibernate now if you’re writing a very small app right you need not to go on the hibernate level hibernate level is required when you’re writing an Enterprise app right where you need to save the time and you don’t want to do a rework and there are various other differences so let’s have a look onto that now so guys first of all you need to write lot of code when it comes to jdbc whereas hibernate you have very limited instructions to mention right hnet supports all the association inheritance collection mappings where in case of jdbc APA you need to write all those Logics so one to one one to many many to many all these mappings they are available as a support in the hibernate hibernate will also give you the transaction management implicitly whereas in jdbc again you need to manage that part Now jdbc API they will throw SQL exception right so it’s a checked exception so we need to write lot of TR catch block code when you are using this uh jdbc but hibernate will internally manage this uh TR catch block for you we got hql which is objectoriented programming whereas jdbc you need to write the native SQL queries hibernate will automatically give you the cash management for better performance in three levels of cash whereas jdbc you need to manage it yourself so by default hibernate’s performance is higher as compared to the jdbc part so lastly hibernate will provide an option where we can create the database and the tables too but for the jdbc these EX existence should be there before you dump the data other than that one of the very significant feature why hybernate over jdbc is if you want to switch from one database to the other database it’s going to be very complicated with the jdbc but in case of hibernate we got a configuration file you just need to change the parameters in the configuration file and you will be able to shift from Oracle to my SQL or any other database to any other database of your choice and with this we come to an end to this Java full course if you enjoyed listening to this full course please be kind enough to like it and you can comment on any of your doubts and queries we will reply to them at the earliest and do look up for more videos and playlist And subscribe to the edas YouTube channel to learn more thank you for watching and happy learning

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • IELTS Speaking Test Feedback & Analysis IELTS Speaking Test- Perfect Band 9 – Study Notes

    IELTS Speaking Test Feedback & Analysis IELTS Speaking Test- Perfect Band 9 – Study Notes

    This text comprises an interview focusing on an individual’s preferences and opinions regarding various aspects of life, including music, media consumption habits, outdoor activities, and favorite actors. The interviewee’s responses reveal a penchant for Afro music, fashion magazines, outdoor activities, and mystery films, demonstrating a rich cultural background. Following the interview, an English language proficiency assessment is conducted, highlighting the interviewee’s strong pronunciation, fluency, and vocabulary, while suggesting improvements in directly answering questions to achieve a higher score. The assessment ultimately predicts a Band 9 score, the highest possible.

    Cultural Influences on Leisure Activities in India

    Several societal and cultural factors influence leisure activities, as seen in the sources.

    • Cultural background shapes the importance of certain activities [1]. For example, in India, music and dance are integral to expressing emotions and are therefore taught in schools [1]. This suggests that cultural values can influence the types of leisure activities that are emphasized and encouraged within a society.
    • Popularity within a country influences which activities are commonly practiced [2]. In India, cricket and badminton are popular outdoor activities, with people frequently seen playing these games [2]. This shows how national preferences can shape the leisure landscape.
    • Tradition and family practices can also shape leisure activities. In India, theater is now mostly seen as an activity that families do with their children to introduce them to the culture, which indicates that traditional activities are being adapted to fit modern family practices [3].
    • Access to resources and opportunities also play a role in which leisure activities are available and enjoyed. For example, people may choose to work in the theater due to an interest in acting, but not being able to make a career in movies [4]. Furthermore, the availability of free public services like theater shows can also impact access to certain leisure activities [4].
    • The influence of media such as movies also shapes leisure time, with action, drama, and comedy being popular movie genres in India [3]. The source also notes that the shift to digital movie consumption at home may affect the popularity of going to the cinema [3].
    • Personal preferences and interests also play a big role in the selection of leisure activities [2]. For example, the speaker enjoys outdoor activities, such as football, swimming, and going to the beach [2]. They also enjoy watching movies, particularly those that are action or mystery, and appreciate actors such as Benedict Cumberbatch and Angelina Jolie who are known for their work in those genres [2].

    In summary, societal and cultural factors like cultural background, national popularity, tradition, access to resources, media influence, and personal preferences, all play a significant part in influencing people’s choices of leisure activities [1-4].

    Favorite Actors: Cumberbatch and Jolie

    The interviewee’s favorite actor is Benedict Cumberbatch and their favorite actress is Angelina Jolie [1].

    The interviewee likes Benedict Cumberbatch because:

    • They are a fan of the TV show Sherlock, in which Cumberbatch plays the lead role, and they felt like they were watching the Sherlock Holmes from the books rather than an actor on the screen. This is important to the interviewee because they are a “crazy Sherlock fan” who loves mystery and detective stories [1].
    • They also enjoyed Cumberbatch’s role as Doctor Strange in the movie Doctor Strange, which is the interviewee’s favorite superhero from The Avengers [1].
    • The interviewee thinks he is an incredible actor and that his acting is always “on point” [1].

    The interviewee likes Angelina Jolie because:

    • They like her movies, which tend to be action and mystery [1].
    • They also admire her humanitarian work and her charity work that helps feed children in less fortunate countries [1].
    • The interviewee is drawn to Jolie’s “fierce” and powerful “divine feminine” presence, which makes the interviewee feel empowered as a woman. They feel she has overcome a mentally unstable past to become a very strong woman [1].
    • They feel that Jolie’s acting is “always number one” [1].

    The interviewee also mentions that they like the action and mystery genres that these actors frequently star in, indicating that their personal preferences in movie genres also play a role in their choice of favorite actors [1].

    Publicly Funded Theater: A Critical Perspective

    The interviewee has several opinions about publicly funded theater, as discussed in the sources:

    • They believe that theater should be both a business and a public service. They think it’s important for people to be employed, but that theater should also be a service to the public [1].
    • The interviewee suggests that theater can provide opportunities for people who want to act but may not be able to work in movies [1].
    • The interviewee thinks that governments should fund theaters to put on shows for the public, but only if those shows are free [1]. They state that if the public is charged to see a publicly funded show, it “doesn’t make any sense” [1]. They also think that publicly funded theater should be free to the public [1].
    • The interviewee does not think that theater is as popularized in India as much as Cinema and film and movies are, and it is mainly an activity that families go to with their children to show them a play to introduce them to this form of culture and activity [2].

    Magazine Consumption Habits

    The interviewee prefers to consume magazines in paper-based form, stating that they need to have a physical magazine in their hand [1]. They describe themselves as old-fashioned in this regard and suggest that physically reading a magazine or book produces serotonin in their brain, which is a different experience from reading digitally [1].

    The interviewee enjoys reading magazines that focus on fashion and interior design [1]. They like to see creative content from around the world, learn about new trends, and gain knowledge about different things [1]. For example, they mentioned learning the names of fabrics and decor items from magazines [1].

    While they find magazines to be a good source of information, the interviewee acknowledges that magazines are a shorter version of books, and they prefer books to magazines [1].

    Theater Funding: A Public Service and Business

    The interviewee has a nuanced view on theater funding, believing that it should function as both a business and a public service [1]. They suggest that theater can be a source of employment, and also a cultural service that should be made available to the public [1].

    Key aspects of their opinion on theater funding include:

    • They think that theater provides an opportunity for people who would like to pursue acting but are unable to do so in the movie industry [1].
    • They believe that governments should fund theaters to put on shows for the public [1]. However, they emphasize that these shows should be free to the public; otherwise, the funding does not make sense [1]. They state that if people have to pay for a publicly funded show, it defeats the purpose [1].
    • They also note that theater is not as popular in India as cinema and movies are [2]. They state that theater is mainly an activity that families partake in with their children to expose them to this form of culture [2].

    Indian Cinema: Genre Preferences

    In India, the most popular movie genres are action, drama, and comedy [1].

    • Action and drama films often have an emotional connection and are frequently fictional [1].
    • Comedy is also a popular genre in the films that are currently being produced [1].

    The interviewee also personally enjoys action and mystery films [1, 2]. The interviewee mentions being a fan of actors Benedict Cumberbatch and Angelina Jolie, who frequently star in action and mystery films, which could also indicate why those genres are popular [2].

    Musical Preferences of the Interviewee

    The interviewee has clear preferences regarding music, and these preferences are consistently mentioned throughout the sources. Here is a summary of the interviewee’s music preferences:

    • The interviewee enjoys listening to Afro music, hip-hop, and R&B [1].
    • They typically listen to these genres while driving, as the music puts them in a good mood [1].
    • The interviewee also sometimes listens to these genres when they are working out at the gym [1].
    • The interviewee’s choice of music seems to be linked to the activities they are engaged in, with these genres being used to enhance the experience of driving or exercising [1].

    In summary, the interviewee has a strong preference for specific genres, particularly Afro music, hip-hop, and R&B. They integrate music into their daily life, using it to enhance activities like driving and working out.

    Magazine Reading Preferences

    The interviewee has specific preferences and habits when it comes to reading magazines, as detailed in the sources:

    • The interviewee prefers to read paper-based magazines, stating that they need to physically hold the magazine in their hands [1]. They feel that this produces serotonin in their brain, making it a different experience from reading digital content [1, 2]. They consider themselves old-fashioned in this preference [1].
    • The interviewee is interested in magazines that focus on fashion and interior design [1]. They enjoy seeing creative content from around the world [1]. They like to learn about new trends and gain knowledge about various things, such as the names of fabrics and decor items [1].
    • They view magazines as a source of information, stating that they can learn about different things, like the name of a fabric or a decor item, by reading the magazine [1].
    • While they appreciate magazines for the information they provide, the interviewee acknowledges that magazines are shorter versions of books, and that they prefer books overall [1].

    In summary, the interviewee has a preference for the physical format of magazines, valuing the tangible experience and the specific content related to fashion and design that they provide [1]. While they appreciate magazines for their informative content, they acknowledge the greater depth of books [1].

    Active Outdoor Lifestyle

    The interviewee enjoys spending time outdoors and has an active lifestyle, as detailed in the sources:

    • The interviewee states that they love being outdoors and are not a “home-based person” [1]. They feel that they have to keep moving all the time [1].
    • They spend their time planning activities or being outdoors with friends, even if they are not doing anything in particular [1].
    • The interviewee enjoys playing outdoor sports such as football or engaging in activities like swimming and going to the beach with friends [1].
    • In their country, the most popular outdoor activities are cricket and badminton [1]. The interviewee mentions that you will always see kids playing these games when you go outside [1].

    In summary, the interviewee has a strong preference for being active and outdoors. They enjoy various outdoor activities with friends and also note that certain sports are particularly popular in their country.

    Cumberbatch, Jolie, and Favorite Actors

    The interviewee has two favorite actors, Benedict Cumberbatch and Angelina Jolie, and their preferences are detailed in the sources [1, 2]. Here’s a breakdown of why they admire these actors:

    Benedict Cumberbatch [1, 2]:

    • The interviewee is a “crazy Sherlock fan” and was impressed by Cumberbatch’s portrayal of the character in the TV show Sherlock. They felt that they were watching the Sherlock Holmes from the books, rather than an actor on the screen [1, 2].
    • The interviewee also enjoyed Cumberbatch’s role as Doctor Strange in the movie Doctor Strange, which is their favorite superhero from The Avengers [1, 2].
    • The interviewee finds Cumberbatch to be an “incredible actor” whose acting is “always on point” [1].

    Angelina Jolie [1]:

    • The interviewee likes her movies, which tend to be in the action and mystery genres [1].
    • They admire Jolie’s humanitarian work and her charity work that focuses on feeding children in less fortunate countries [1].
    • The interviewee is drawn to Jolie’s “fierce” and powerful “divine feminine” presence. They also feel that she has overcome a mentally unstable past to become a strong woman, and this makes them feel empowered as a woman [1].
    • The interviewee thinks that Jolie’s acting is “always number one” [1].

    The interviewee’s preferences for these actors are also linked to their personal tastes in movie genres, as they enjoy action and mystery films, which both Cumberbatch and Jolie frequently star in [1].

    English Proficiency Assessment: Band 9

    The interviewee demonstrates a high level of English proficiency, as evaluated in the sources. Here’s a breakdown of their language skills:

    • Pronunciation: The interviewee’s pronunciation is a strong point [1]. They speak with a clear Indian accent, but it does not impede understanding [1, 2]. They also use intonation effectively to convey meaning and emotion, using connected speech, and they also use sentence stress [2]. These are high-level features that are difficult to learn and that they use naturally [2].
    • Fluency: The interviewee is able to speak without unnatural pauses or hesitation [2]. They do pause at times to formulate ideas, which is natural, and not due to language difficulties [2]. The examiner notes that there is a difference between hesitating because of language issues versus pausing to think of ideas, and the interviewee demonstrates the latter [2].
    • Coherence: This is the only area where the examiner suggests the interviewee could improve [3]. The examiner notes that while the interviewee does answer questions, they do not always answer questions explicitly [3]. The examiner also notes that the interviewee was not always developing their answers fully, particularly in part three [3, 4]. However, the examiner also states that the interviewee’s attempt to answer a difficult question in part three shows that they are at a very high level [4]. Overall, their coherence is still very good [4].
    • Grammar: The interviewee demonstrates a strong understanding of grammar structures [4]. They use a variety of grammatical forms correctly, such as comparatives and superlatives [4]. They also make very few grammar mistakes, with only one or two minor slips (such as a preposition or article slip), which is comparable to a native English speaker [4].
    • Vocabulary: The interviewee’s vocabulary is excellent, using topic-specific and idiomatic language, which is characteristic of high-level students [4].

    Overall, the examiner assesses the interviewee’s English proficiency to be at a band 9 level, the highest possible score [4]. They acknowledge that the only area of concern was coherence, which could be improved to ensure a perfect score on the test day. The examiner stated that, overall, the interviewee is an exceptional speaker of English. The examiner notes that less than 1% of people get a band 9 [4].

    Interviewee Profile and Performance Analysis

    Here is a study guide based on the information discussed in the sources and our conversation history:

    I. Personal Preferences and Habits

    • Music: The interviewee enjoys Afro music, hip-hop, and R&B, often listening while driving or working out [1].
    • Magazines: The interviewee prefers to read physical, paper-based magazines, particularly those focused on fashion and interior design, valuing the tangible experience and information about trends and design elements. While they appreciate magazines for their informative content, they prefer books overall [1].
    • Outdoor Activities: The interviewee loves being outdoors, actively engaging in activities like playing football, swimming, and going to the beach with friends [2]. They mention cricket and badminton are popular in their country [2].
    • Movies: The interviewee is a fan of action, drama, and comedy films from India, and also personally enjoys action and mystery movies. They are particularly fond of Benedict Cumberbatch and Angelina Jolie, both of whom often star in these genres [2, 3].

    II. Cultural and Social Opinions

    • Theater: The interviewee believes theater should function as both a business and a public service, providing employment opportunities while also serving as a cultural offering to the community [4].
    • They think that publicly funded theater should be free to the public [4].
    • They note that theater is less popular in India than cinema and is mainly used as an activity for families to introduce their children to this form of culture [3, 4].
    • Movie Popularity: The interviewee notes that while movie theaters were very popular in the past, they think that people are now watching movies more at home. They believe that movie streaming may become more popular in the future [3].

    III. English Language Proficiency

    • Overall: The interviewee demonstrates a high level of English proficiency, equivalent to a band 9 score [5].
    • Pronunciation: The interviewee’s pronunciation is clear, and they use intonation, connected speech, and sentence stress naturally and effectively [4, 6].
    • Fluency: The interviewee speaks without unnatural pauses or hesitation. Any pauses are due to formulating ideas, not language difficulties [6, 7].
    • Coherence: This is the only area for slight improvement. While the interviewee answers questions, sometimes they do not answer explicitly or develop their answers fully [5, 7].
    • Grammar: The interviewee has a strong command of grammar, making very few errors [5].
    • Vocabulary: The interviewee has excellent topic-specific and idiomatic vocabulary [5].

    IV. Key Strengths and Areas for Improvement

    • Strengths: The interviewee demonstrates excellent pronunciation, fluency, grammar, and vocabulary [4-6]. They are articulate and express their thoughts clearly.
    • Areas for Improvement: The interviewee should focus on answering questions explicitly, particularly in the first section of the test, and fully developing their answers, especially in the third part [7].

    V. Review Points for Test Preparation

    • Answer Questions Directly: When answering questions, be sure to address them explicitly rather than implicitly. For example, rather than saying “I listen to music when I drive,” state how often you listen to music explicitly, such as “I listen to music every day” [7].
    • Develop Answers Fully: Ensure your answers, especially in Part 3 of the test, are well-developed and thorough, demonstrating your ability to speak at length on a variety of topics [5, 7].
    • Utilize Strengths: Continue to use your excellent pronunciation, fluency, grammar and vocabulary, particularly intonation, connected speech, and sentence stress to demonstrate a high command of the language [6].
    • Embrace your Accent: Don’t try to remove your accent, focus on speaking clearly [6].

    This guide should help you to review key aspects of the interviewee’s preferences, opinions, and language skills. Remember to focus on the areas of improvement noted to ensure a strong performance.

    Interviewee Profile and Language Assessment

    Here is a briefing document summarizing the key aspects of the interviewee’s preferences, opinions, and language skills, based on the sources and our conversation history:

    I. Overview

    The interviewee demonstrates a strong command of the English language and has diverse interests and opinions. They possess a high level of proficiency in English, with some areas that can be improved. The interviewee also has clear preferences related to media consumption, recreational activities, and cultural practices.

    II. Personal Preferences

    • Music: The interviewee enjoys listening to Afro music, hip-hop, and R&B, particularly while driving or working out [1]. They use music to enhance their mood and activities.
    • Magazines: They prefer reading paper-based magazines, especially those focusing on fashion and interior design [1]. They value the tangible experience of holding a physical magazine and appreciate the knowledge they gain about trends, fabrics, and decor [1]. They prefer books overall, however, recognizing magazines as shorter versions [1].
    • Outdoor Activities: The interviewee loves being outdoors and has an active lifestyle. They enjoy activities like playing football, swimming, and going to the beach with friends [2]. They are not “home-based” and feel the need to keep moving [2]. They also note that cricket and badminton are popular in their country [2].
    • Movies: The interviewee enjoys a variety of movie genres, including action, drama, and comedy from India, and personally likes action and mystery films [3]. They are fans of actors Benedict Cumberbatch and Angelina Jolie, who frequently star in these genres [2].

    III. Cultural and Social Opinions

    • Theater: The interviewee believes that theater should operate as both a business and a public service, providing employment and cultural enrichment [4]. They think that if public funds support theater, it should be free to the public [4]. They note that theater is not as popular as cinema in India, and is mainly used as a way to introduce children to this art form [3].
    • Cinema: The interviewee thinks that people are now watching movies more at home and that streaming may become more popular than going to the cinema in the future [3].

    IV. English Language Proficiency

    • Overall: The interviewee demonstrates a very high level of English proficiency, equivalent to a band 9 level [5].
    • Pronunciation: The interviewee’s pronunciation is excellent, and they use intonation, connected speech, and sentence stress naturally and effectively [4, 6]. They speak with a clear Indian accent, but it does not impede understanding [6].
    • Fluency: They speak without unnatural pauses or hesitations, pausing only to formulate ideas [6].
    • Coherence: This is an area for slight improvement. The interviewee sometimes answers questions implicitly rather than explicitly and could develop answers more fully, especially in the third part of the test [7].
    • Grammar: The interviewee has a strong command of grammar, making very few errors, similar to a native English speaker [5].
    • Vocabulary: Their vocabulary is excellent, with use of topic-specific and idiomatic language [5].

    V. Key Strengths and Areas for Improvement

    • Strengths: The interviewee demonstrates excellent pronunciation, fluency, grammar, and vocabulary [5]. They are articulate and express their thoughts clearly [6]. They use intonation, connected speech, and sentence stress well [6].
    • Areas for Improvement: The interviewee should focus on answering questions explicitly, particularly in the first section of the test, and fully developing their answers, especially in the third part [7].

    VI. Recommendations

    • Address Questions Directly: Encourage the interviewee to answer all questions directly rather than implicitly [7].
    • Develop Answers Thoroughly: Emphasize the importance of fully developing answers, especially in the third part of the test, to demonstrate a comprehensive understanding and ability to speak at length on various topics [7].
    • Utilize Strengths: Encourage the interviewee to continue using their excellent pronunciation, fluency, grammar, and vocabulary, particularly intonation, connected speech, and sentence stress [6].
    • Embrace Accent: Reassure the interviewee to not try to remove their accent, but rather focus on speaking clearly [6].
    • Focus on Coherence: Encourage the interviewee to focus on maintaining clarity and organization in their responses, ensuring they answer each part of the question fully [7].

    This briefing document should provide a comprehensive overview of the interviewee’s profile, highlighting their strengths and areas for improvement.

    Interviewee Profile and English Proficiency Assessment

    Here is an FAQ based on the sources and our conversation history:

    Q: What kind of music does the interviewee enjoy? A: The interviewee enjoys listening to Afro music, hip-hop, and R&B [1]. They often listen to music while driving or working out [1].

    Q: Does the interviewee prefer reading magazines or books? A: While the interviewee enjoys reading magazines, particularly those about fashion and interior design, they prefer books overall [1]. They view magazines as shorter versions of what is in books [1]. They also like the physical experience of reading a paper-based magazine or book [1, 2].

    Q: What are the interviewee’s favorite outdoor activities? A: The interviewee enjoys being outdoors and is not a home-based person [2]. They like activities like playing football, swimming, and going to the beach with their friends [2]. They also mentioned that cricket and badminton are popular in their country [2].

    Q: Who are the interviewee’s favorite actors and what types of movies do they enjoy? A: The interviewee’s favorite actors are Benedict Cumberbatch and Angelina Jolie, who often star in action and mystery films, which are genres the interviewee enjoys [2]. They also like action, drama and comedy films from India [3].

    Q: What are the interviewee’s views on the theater? A: The interviewee believes that theater should function as both a business and a public service [4]. They think that it should provide employment opportunities and serve as a cultural offering to the community [4]. They also feel that if the government is paying for theaters, the plays should be free to the public [4]. They also think that theater is not as popular as cinema in India, and is mostly used as an activity for families to introduce their children to this form of culture [3].

    Q: What are the interviewee’s views on the future of cinema? A: The interviewee thinks that people are now watching movies more at home and that streaming may become more popular than going to the cinema in the future [3].

    Q: How would you describe the interviewee’s English language proficiency? A: The interviewee demonstrates a very high level of English proficiency, equivalent to a band 9 score [5].

    Q: What are the strengths of the interviewee’s English language skills? A: The interviewee’s strengths include excellent pronunciation, using intonation, connected speech, and sentence stress effectively, fluency, grammar, and vocabulary [5, 6]. They are articulate and express their thoughts clearly [5]. They also use topic-specific and idiomatic language [5].

    Q: What are the areas where the interviewee can improve their English language skills? A: The main area for improvement is coherence. The interviewee sometimes does not answer questions explicitly or develop their answers fully, particularly in Part 3 of the test [7]. They should focus on answering questions directly rather than implicitly [7].

    Q: Is it a problem that the interviewee has an Indian accent? A: No, the examiner notes that the interviewee speaks with a clear Indian accent, but it does not impede understanding [6]. They also note that the interviewee should not try to remove their accent, but instead should focus on speaking clearly [6].

    English Language Proficiency Assessment and Cultural Profile

    Here is a timeline summarizing key events and topics discussed in the sources, based on the provided information and our conversation history:

    I. Personal Background & Preferences

    • Ongoing: The interviewee enjoys listening to Afro music, hip-hop, and R&B, often while driving or working out [1].
    • Ongoing: Prefers reading paper-based magazines on fashion and interior design, valuing the physical experience and detailed information they offer, but prefers books overall [1].
    • Ongoing: The interviewee enjoys being outdoors, participating in activities like football, swimming, and going to the beach with friends [2].
    • Ongoing: Enjoys action, drama, and comedy films from India and is a fan of actors Benedict Cumberbatch and Angelina Jolie, who often star in action and mystery films [2, 3].

    II. Cultural & Social Views

    • Past & Present: The interviewee notes that cricket and badminton are popular in their country [2].
    • Past to Present: The interviewee notes that theater is less popular than cinema in India [3]. It is mainly an activity for families to introduce children to this form of culture [3].
    • Present: The interviewee believes theater should function as both a business and a public service, providing employment and cultural opportunities [4].
    • Present: The interviewee thinks that publicly funded theater should be free to the public [4].
    • Present & Future: The interviewee thinks that people are watching movies more at home and that streaming may become more popular than going to the cinema in the future [3].

    III. English Language Assessment

    • Present: The interviewee’s English language skills are assessed, revealing a high level of proficiency, equivalent to a band 9 score [4, 5].
    • Pronunciation is excellent, with clear speech, intonation, connected speech and sentence stress [4, 6].
    • Fluency is high, with no unnatural pauses or hesitations [6].
    • Grammar is strong, with very few errors [5].
    • Vocabulary is excellent, including topic-specific and idiomatic language [5].
    • Coherence is good but has room for slight improvement with a need to answer questions more explicitly and fully develop answers in part three [7].

    IV. Feedback & Recommendations

    • Present: The interviewee is given feedback on their English language skills, with a focus on areas for improvement including coherence [4, 7].
    • They are advised to answer questions explicitly rather than implicitly [7].
    • They are advised to develop answers more fully, especially in the third part of the test [7].
    • They are reassured to embrace their accent and focus on speaking clearly [6].

    This timeline provides an overview of the key topics and events discussed, from personal preferences to the assessment of English language skills. The information is presented chronologically and with the understanding that some of the interviewees’ preferences and habits are ongoing.

    An Interview on Leisure Activities and Entertainment in India

    Here is a list of the questions asked in the interview and the answers given, based on the sources:

    • Question: How often do you listen to music?
    • Answer: The interviewee listens to music mostly when driving. They also listen when working out [1].
    • Question: Is music an important subject in schools in your country?
    • Answer: Yes, it is important in India, where music and dance are ways to express emotions. Schools teach classical music or have some music-related subject [1].
    • Question: Do you ever go to live concerts?
    • Answer: The interviewee has been to three concerts of their favorite artists [1].
    • Question: Do you prefer to read magazines or newspapers?
    • Answer: The interviewee prefers magazines, particularly on the topics of fashion or interior design [1].
    • Question: Do you think you can learn as much from a magazine as a book?
    • Answer: No, a magazine is like a shorter version of a book, so the interviewee prefers books [1].
    • Question: Do you think that you will continue to read paper based magazines in the future?
    • Answer: Yes, the interviewee is old-fashioned and needs a physical book in hand. They feel this produces serotonin in their brain, and digital is not the same [1].
    • Question: Do you like being outdoors?
    • Answer: Yes, the interviewee loves being outdoors and spends time planning activities or just being out with friends. They are not a home-based person [2].
    • Question: Which outdoor sports do you enjoy doing?
    • Answer: The interviewee enjoys playing football, swimming, and going to the beach with friends [2].
    • Question: Which outdoor activities are most popular in your country?
    • Answer: Cricket is very popular in India, and badminton is also enjoyed by many [2].
    • Question: What are the most popular types of movies in your country?
    • Answer: The interviewee notes that action and drama movies are popular in India, especially those with an emotional connection. Comedy films are also popular [3].
    • Question: Do you think that going to the cinema will be as popular in the future?
    • Answer: The interviewee thinks it will be 50/50, noting that people are watching movies at home more often now and that it is not as exciting as it once was [3].
    • Question: How strong a tradition is it today in your country to go to the theater?
    • Answer: Theater is not as popular as cinema in India and is more of an activity for families with children to introduce them to this form of culture. It is more popular in out-of-city areas [3].
    • Question: Do you think that theater should be run as a business or as a public service?
    • Answer: The interviewee thinks that it should be both, so people can be employed while also providing a public service [4].
    • Question: In some countries governments pay theaters to put on shows for the public, do you think this is good use of public money?
    • Answer: It depends on whether or not it is free to the public, because if the public is being charged it doesn’t make sense. The interviewee thinks it should be available freely to the people [4].

    In addition to these questions and answers, the interviewee also described their favorite actor, Benedict Cumberbatch, and actress, Angelina Jolie, noting their work in action and mystery films [2].

    Cultural Insights and English Language Proficiency Assessment

    Here is a list of topics discussed in the interview, drawing from the sources and our conversation history:

    • Music: The interviewee discussed their music preferences, noting that they enjoy Afro music, hip-hop, and R&B. They also talked about when they listen to music, typically while driving or working out, and its importance in Indian schools [1]. They also spoke about going to live concerts [1].
    • Magazines and Newspapers: The conversation covered the interviewee’s preference for magazines over newspapers, especially those about fashion and interior design [1]. They shared their view that magazines provide knowledge and information, while also noting that books are preferable to magazines for more in depth knowledge [1]. They also expressed a preference for reading physical copies of books and magazines, and not digital versions [1].
    • Outdoor Activities: The interviewee expressed their love for the outdoors and their enjoyment of activities such as playing football, swimming, and going to the beach with friends [2]. They also talked about the popularity of cricket and badminton in their country [2].
    • Movies and Theater: The discussion covered the interviewee’s favorite actors, Benedict Cumberbatch and Angelina Jolie, and their preference for action and mystery films [2]. They also spoke about popular movie genres in India, such as action, drama, and comedy [3]. The conversation also addressed the future of cinema and the role of theater in their country, as well as the interviewee’s opinions on how theaters should be run and funded [3, 4]. They stated that theater is not as popular as cinema in India [3].
    • English Language Assessment: A significant portion of the conversation was dedicated to assessing the interviewee’s English language skills. This included feedback on pronunciation, fluency, coherence, grammar, and vocabulary [4-7]. The interviewer discussed how the interviewee uses intonation, connected speech, and sentence stress effectively [5]. The interviewee’s English language proficiency was assessed to be at a very high level, equivalent to a band 9 score [7].
    • Feedback and Recommendations: The interviewer offered feedback on how the interviewee could improve, including a focus on answering questions explicitly and fully developing answers [6]. The interviewee was also advised not to try to remove their accent and to focus on speaking clearly [5].

    This list provides a comprehensive overview of the main topics discussed, ranging from personal preferences and cultural views to a detailed assessment of the interviewee’s English language abilities.

    Interviewee Profile: Cultural Views, Preferences, and English Proficiency Assessment

    Here is a full summary of the interview, drawing on information from the sources and our conversation history:

    The interview covered a range of topics, including the interviewee’s personal preferences, cultural views, and English language abilities.

    Personal Preferences: The interviewee enjoys listening to Afro music, hip-hop, and R&B, typically while driving or working out [1]. They prefer to read paper-based magazines about fashion and interior design and feel that they gain knowledge from this activity [1]. They prefer physical books over magazines [1]. The interviewee loves being outdoors and enjoys activities like playing football, swimming, and going to the beach with friends [2]. They are also a fan of actors Benedict Cumberbatch and Angelina Jolie, who often star in action and mystery films [2]. They enjoy action, drama, and comedy films [3].

    Cultural Views: The interviewee is from India, and notes that cricket and badminton are popular outdoor activities there [2]. They also note that music and dance are important in Indian culture and are taught in schools [1]. They observe that theater is less popular than cinema in India and is now primarily an activity for families with children [3]. They believe that theaters should be both businesses and public services [4]. They also feel that publicly funded theater should be free to the public [4]. They note that people are increasingly watching movies at home, and that streaming may become more popular than going to the cinema in the future [3].

    English Language Assessment: A significant portion of the interview was dedicated to assessing the interviewee’s English language skills [4]. The interviewer found that the interviewee’s English language skills are at a very high level, equivalent to a band 9 score [5].

    • Pronunciation is excellent, with clear speech, intonation, connected speech, and sentence stress [4, 6].
    • Fluency is high, with no unnatural pauses or hesitations [6].
    • Grammar is strong, with very few errors [5].
    • Vocabulary is excellent, including topic-specific and idiomatic language [5].
    • Coherence is good but needs slight improvement, with a need to answer questions more explicitly and to fully develop answers [5, 7].

    Feedback and Recommendations: The interviewer gave the interviewee feedback, focusing on areas for improvement [4]. The interviewee was advised to answer questions explicitly rather than implicitly and to develop answers more fully, especially in the third part of the test [7]. They were also reassured to embrace their accent and focus on speaking clearly [6]. The interviewer noted that the interviewee attempted to answer all questions, even those that were difficult, which is characteristic of a high-level English speaker [5].

    In summary, this was a wide-ranging interview that touched on the interviewee’s personal life and cultural background, and provided a detailed assessment of their English language proficiency. The interviewee demonstrated a strong command of the English language, while also offering interesting perspectives on their cultural background and personal preferences.

    The Original Text

    let’s talk about music how often do you listen to music I think I listen to music mostly when I’m driving I think it puts me in such a good mood when I’m like out there on a drive and I play my favorite music I’m usually into afro music a lot hip-hop and afro and R&B so I prefer listening to music when I’m driving or sometimes when I’m working out I’m at the gym something like that is music an important subject in schools in your country in schools in my country it is because you know um I’m from India so in India music and dance and um expressing our emotions is usually through music and uh dancing so in every school they teach classical music or they have a subject where there is something about music usually so I think it is important do you ever go to live concerts oh I’ve been to three concerts and three of them are my favorite artists and it was actually on my um wish list and I made it happen and uh it was one of the best experiences and uh in live concerts it’s a lot different than you would imagine um just have to keep your energy uh straight and it’s it’s like um it’s like you can’t believe it’s happening now let’s talk about magazines and newspapers do you prefer to read magazines or newspapers definitely magazines um mostly on the topics of fashion or Interior Design This is what I really like because I like to see creative sides all from all over the world I like to see what people are talking about what’s new what’s trending and um I like to learn like I like to have knowledge of things of like what is this called what is that called CU usually when you see pictures you don’t usually know what it’s called so when you read a magazine know where you get the knowledge that’s that’s where you get to know oh this fabric is called this or this uh decor a is called that so I think it’s very good on information do you think you can learn as much from a magazine as a book definitely not cuz magazine is like a shorter version of what’s in a book so I definitely prefer books over magazines do you think that you will continue to read paper based magazines in the future I think I’m very old-fashioned like that I need to have a physical book in my hand and that’s how I think it produces serotonin in my brain otherwise no digital it’s very different it’s I I like uh physically reading a magazine or a book now let’s talk about outdoor activities do you like being outdoors I love being outdoors um I usually spend my time planning an activity or just being out my friends even if I’m not doing anything I must stay Outdoors I’m not a very like home based person like I can’t stay home much I have to keep moving all the time which outdoor sports do you enjoy doing I like uh um going out with my friends and playing football or or some kind of uh activity like swimming um going to the beach this is this is something I really really enjoy which outdoor activities are most popular in your country definitely it’s like the game of uh India everybody loves Cricket when you go out of your house you’re always going to see like some kids playing uh or or also batminton actually uh people enjoy that a lot as well I’d like to describe my favorite actor and actress um so my favorite actor will be Benedict Cumberbatch and um my favorite actress is Angelina Julie and I like their movies so much um they usually star in action films or mystery films and that’s very similar to where I am like in my personal life I love mysterious stuff I’m I’m like always into like detective uh theories or mystery books and stuff like that so I always watch movies as such and their acting is on point it’s always number one and I like Angelina Julie also for her humanitarian work that she does throughout her life she’s been very present uh with charity work and um making sure that a lot of kids are fed in countries which are unfortunate and I really like that about her and I also like how Fierce she is and uh when she presents herself it’s it’s very divine feminine so I really really like that and I feel like she has that sort of energy where um a woman can feel powerful about herself just by looking at her and kind of um understanding where she comes from she doesn’t really come from a very mentally stable place but now at this point in her life she’s a very like strong woman and and she’s done it all herself and Benedict Kash I actually watched his uh TV show which was called Sherlock and I am a crazy Sherlock fan and I’m I love mystery like I said and um detective stories and everything and him playing that really showed me what kind of an incredible actor he is because I felt like I’m watching Sherlock Holmes from the books and not an actor on screen and um he’s also done a movie that I really love it’s called Doctor Strange that’s my favorite superhero from The Avengers and he has just done an amazing job uh in that movie so we’ve been talking about a famous actress and actor that that you enjoy and we’re going to continue to talk about movies and and Theater what are the most popular types of movies in your country it would be to thank you for watching this video I want to give you a free course that has helped thousands of students improve their I speaking score what it’s going to do is take you through every single part of the test and give you strategies for part one part two and part three and also allow you to practice at home for free and get feedback to sign up for that for free all you have to do is just click the link in the description thanks very much and let’s get back to the video it would be action and drama definitely something that has to do with emotional connection it’s usually fictional that I would say um and also comedy yeah there’s a lot of Comedy that goes on in the films that are coming out now and from India do you think that going to the cinema will be as popular in the future uh I think 50/50 yeah I’m not sure about that but it looks like uh people enjoy watching movies at home and uh it’s not as much uh exciting as it used to be back then and um I think probably yes it would be more digitally available at home and uh probably yeah now let’s talk about the theater how strong a tradition is it today in your country to go to the theater um mostly I think in out of City areas actually it’s mostly now as a as an activity that families go to with their kids just to show a play to their kids and to introduce them to this form of um culture and activity I think it’s more of that now uh theater is not as much popularized uh back in India as much as Cinema and film and movies are so I think that is kind of on the backseat um it’s not so much as it used to be do you think that theater should be run as a business or as a public service oo I think both I think it goes hand in hand um so that people can be employed as well at the same time and um it it is of a public service at the same time I think um I think that people do enjoy it but at the same time uh um it could be used as an as an excuse and used as like um an opportunity what I’m is what I mean uh to employ people and uh because there’s a lot of people who would love to do acting but they can’t really make it in the movies so maybe they could use theater as um as their hobby so I think yeah both can go hand in hand in some countries governments pay theaters to put on shows for the public do you think this is good use of public money it depends on if whether or not if it’s free to the public because if you’re charging for them to see that play then it doesn’t make any sense is what I think and I think that it shouldn’t be this way in the first place I think it should be available freely to the people um yeah let me give you some feedback on your performance so you’re hoping to get a b nine and I’ll go through the four markting criteria so pronunciation fluency and coherence grammar and vocabulary so let’s start off with your pronunciation to thank you for making it this far in the video I want to give you 10% off our VIP course I VIP course is the most successful I course in the world that is a fact because we have more band seven eight and nine success stories than any other I course in the entire world we do that by simplifying the whole I process supporting you with some of the best is teachers in the world and being with you every step of the way until you get the score that you need all you have to do is just look down in the description just click that and you can sign up if you have any questions about the VIP course always feel free to get in touch with us we answer 100% of the questions that we get hope that you become a VIP if not enjoy the rest of this free video pronunciation is one of your your strong points oh okay the examiner will be thinking can I understand what this person is saying how clear are they and then um some higher level pronunciation features like intonation for example I can understand 100% of what you’re saying you do have a a hint of an accent but it is extremely clear listening to you for anyone watching who has an Indian accent they shouldn’t feel bad about it or or anything like that you know you shouldn’t try and remove your accent I think it’s about speaking as clearly as possible but you you certainly do you also use intonation extremely well so we use intonation to convey meaning for example when you came in here today and I said please sit down very flat intonation going down do I sound happy or rude or serious yeah a bit rude a bit serious but if I said we sit down my intonation is going up sounds completely different but the words are exactly the same so you use intonation like that a lot to show that you’re excited about something that you’re happy about it that you’re talk that you’re serious about something in a very very high level way which is very difficult to learn and you do it very naturally you also use connected speech um so for example if you were talking about movies someone learning English might say do you want to go to the cinema but someone at a high level like yourself do you want to go want to go signs like one word want to go cuz you’re connecting all the speech up you do that lot and very naturally you also use um sentence stress which where you emphasize certain words that’s your coffee so you’re you’re emphasizing that word because that’s the most important word it’s very difficult to to teach that it takes a long time to learn wow you’re doing you’re doing very well in that area fluency is are you able to speak without unnatural pauses without unnatural hesitation and there’s there’s two reasons why people pause and that that type of thing audible pauses like that one one reason is they’re learning a language and they’re trying to think should I use present simple or present perfect or you know what’s the correct adjective to use you don’t do that cuz your your language is at quite a high level you do sometimes pause and think and hesitate a little bit for the second reason which is trying to think of ideas so you can tell especially in the part three you were formulating ideas and you were let me think about that and pausing a little bit but that’s natural and and a good examiner knows the difference between those two things so they’re not going to give you a low Mark for pausing or hesitating a little bit for thinking of the idea now coherence is different it’s did you answer the question and did you develop your answers a little bit more you need to be a little bit careful for example the first question I asked you how often do you listen to music and you told me about when you listen to music so that’s slightly different M now the examiner will base their score on all of your answers it’s not like oh she didn’t she slightly didn’t answer that question in one in one question give her a low score that’s not how it works and the way that you answered that question by saying I listen to music in the car and I listen to it in the I think you said when I drive when I drive you’re answering the question implicitly mhm by implication I know how often you listen to it you should try to answer each question explicitly how often do you every day I don’t think that this is an issue for you today but imagine you go and do the test imagine you have a Canadian visa application that’s like if I don’t get this I’m going to I can’t go and meet you know my family or or you know or do whatever I want to do there’s a lot of pressure on you so often when people are under pressure and under stress they mess up just make sure that you answer every question exactly how they want it the same with the Q card for part two it said describe your favorite actor or actress and you did both mhm so technically an examiner would be extremely picky if they marked you down for that but again I’m not criticizing you but I’m being overly cautious because on exam day if you go and do the test you might go off and talk about something related to that topic but not really answering it correctly I think you would be fine but we just don’t want to take any risks definitely towards the end especially the last question part three what the examiner is thinking about is can this person really develop their answers can they speak at length about topics the last question it was quite a short answer for part three but that was quite impressive I I’ll tell you why if you get a really really difficult question in part three you should be happy because the examiner thinks you’re good if the examiner thinks you’re bad they’ll just throw easy softball questions at you if the examiner thinks that you’re really good they’ll throw more and more difficult questions to really just stretch you and test you and that’s what I was trying to do at the end a really good band eight band n student even if they get a question that they don’t know much about they’re not too sure about they will attempt it answer so your attempt at an answer even though it was quite short indicates that you are at a very high level coherence is the only area that I’m really really concerned about but overall it’s very very good I’m focusing on the negative but it’s only because you’re you should because otherwise how would I know yeah uh grammar The Examiner will be thinking does this person have enough awareness of grammar structures that they can talk about anything like can they use comparatives to compare two things can they use superlatives to talk about their favorite things and talk about the best things whatever I throw at you you’re able to to handle that and they’ll also then think about how many grammar mistakes are you making I think I only only heard one or two small slips I think like preposition slip or an article slip but that is comparable to a native English speaker if you listen to native English speakers speak for 15 20 minutes they’ll make little preposition errors or subject verb agreement errors that’s natural so don’t need to worry about that and your vocabulary is also excellent for example this you use very topic specific words and idiomatic language which is great only very high level students actually do that so your final Bond score would be the highest one which is a bond n no way thank you so much yeah that’s amazing but but but if on test day you didn’t answer the questions in part one you didn’t really answer the question in part two and you didn’t develop your answers enough in part three that would drop you down a little bit not hugely MH but just be careful with that all right less than 1% of people get about nine oh wow yeah so there you go thank you

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • Al Riyadh Newspaper: April 1, 2025 Saudi Arabia Celebrates Eid al-Fitr Across the Kingdom

    Al Riyadh Newspaper: April 1, 2025 Saudi Arabia Celebrates Eid al-Fitr Across the Kingdom

    This collection of articles from the Arabic-language newspaper Al Riyadh covers a range of topics. Local Saudi Arabian news includes directives from the Crown Prince regarding real estate market stability, Eid Al-Fitr celebrations across different regions, and developments in the hospitality and tourism sectors. Regional news reports on Lebanon after rockets were fired towards Israel and a new Syrian government. International stories discuss France’s far-right leader’s conviction, Iran’s threats against potential aggressors, and the search for survivors after a major earthquake in Myanmar and Thailand. Business and economic news features oil market fluctuations, rising gold prices amid trade war concerns initiated by the US, and extended fee collection at a Saudi port. Arts and culture are represented through reviews of Ramadan television dramas and a Saudi film. Opinion pieces discuss national pride, research credibility, interior design trends, and the state of Saudi football.

    Understanding Recent Saudi Developments and Regional News

    Study Guide

    This study guide is designed to help you review the provided news excerpts. It includes a quiz to test your understanding of key facts, essay questions to encourage deeper analysis, and a glossary of important terms.

    Quiz (Short Answer)

    Answer the following questions in 2-3 sentences each, based on the provided text.

    1. What was the primary goal of the directives issued by the Crown Prince regarding the real estate market in Riyadh?
    2. According to the article, what percentage of the Saudi economy is projected to be contributed by the tourism sector by 2034?
    3. What action did the Lebanese General Security take following the rocket launches towards Israeli territory?
    4. For what reason was Marine Le Pen, the leader of the French far-right, convicted by a French court?
    5. What is the main point of contention currently hindering progress in negotiations regarding the second phase of the Gaza agreement?
    6. What is “Hanith” and why is it a significant dish during Eid al-Fitr in Saudi Arabia?
    7. What potential negative consequences does the article suggest could result from the imposition of a 25% tariff on imported cars by the United States?
    8. What is the significance of the increased activity and development of roadside fuel stations along the “North Makkah” road?
    9. What is the purpose of the “Mawani” circular regarding the collection of fees on containers transported from Dammam Port to Riyadh?
    10. According to one of the opinion articles, what was a key factor contributing to the “unjustified and unbalanced” rise in real estate prices in Riyadh?

    Answer Key (for Quiz)

    1. The Crown Prince’s directives aimed to regulate the real estate market in Riyadh by creating a balance between supply and demand and enhancing the stability of the market. This was intended to provide a suitable residential environment for citizens and support Riyadh’s ambition to become one of the ten largest economic cities globally by 2030.
    2. The article projects that the tourism sector’s contribution to the Saudi economy will reach approximately 16% by 2034, totaling around $222.9 billion USD. This growth is expected to create over 3.6 million job opportunities across the Kingdom.
    3. The Lebanese General Security announced the arrest of suspected individuals in connection with the recent rocket launches towards Israeli territory. This action was part of their efforts to monitor the security situation and maintain stability, particularly in light of the escalating events in southern Lebanon.
    4. Marine Le Pen was convicted by a French court for misusing funds from the European Union. She allegedly used these funds to pay the salaries of party staff based in France while they were officially listed as parliamentary assistants in Brussels.
    5. The main point of contention is Israel’s demand to begin discussing the second phase of the ceasefire agreement and the end of the war, while Hamas insists on a clear timeline for these steps. The Hamas government also rejects the proposed Israeli terms.
    6. “Hanith” is a traditional Saudi dish, particularly popular in the southern region, where lamb is slow-cooked in an underground pit using the heat of wood and stones, giving it a smoky flavor. It is a significant dish during Eid al-Fitr as families gather for large meals after Ramadan, and its preparation is a festive tradition passed down through generations.
    7. The article suggests that imposing a 25% tariff on imported cars could lead to a moderate inflation of around 10% in car prices in the US market and potentially increase the average monthly car payment. In the long term, it could lead to Americans keeping their cars longer due to the high cost of new vehicles.
    8. The increased activity and development of fuel stations along the “North Makkah” road reflect the significant investment in infrastructure to accommodate the huge numbers of Umrah and Hajj pilgrims. These modern stations with diverse and high-quality services aim to manage congestion and provide rapid services to travelers.
    9. The “Mawani” circular extended the deadline for collecting fees on containers moved from King Abdulaziz Port in Dammam to the Dry Port in Riyadh. This extension aims to improve the efficiency of operational processes and maintain the rights of beneficiaries by encouraging the prior registration of goods.
    10. According to Dr. Talal Al-Harbi’s opinion piece, the recent “unjustified and unbalanced” rise in real estate prices in Riyadh was partly due to the exploitation of the market by some real estate owners and traders, who raised prices and rents without any logical justification, especially given Riyadh’s rapid growth and the disproportionate demand compared to supply.

    Essay Format Questions

    Consider the following questions and plan out a well-structured essay for each.

    1. Analyze the interconnectedness of the different news articles. How do the local Saudi developments (real estate, tourism, Eid celebrations, infrastructure) relate to the regional and international news (Gaza negotiations, Lebanon tensions, French politics, US tariffs, oil markets)?
    2. Discuss the potential impact of Saudi Arabia’s Vision 2030 on various sectors as highlighted in these articles. Consider the real estate market regulation, the growth of the tourism industry, and infrastructure development in your analysis.
    3. Evaluate the significance of international political and economic events (US tariffs, Gaza conflict, Lebanese tensions, French elections) on Saudi Arabia’s domestic and international standing, based on the information provided.
    4. Compare and contrast the perspectives presented in the opinion articles regarding the real estate market in Riyadh and the potential impacts of US trade policies on the global and domestic economies.
    5. Examine the role of tradition and modernity in Saudi Arabia as reflected in the news articles, considering both the celebrations of Eid al-Fitr and the ambitious development projects outlined.

    Glossary of Key Terms

    • ولي العهد (Wali al-Ahd): Crown Prince. In the Saudi Arabian context, this refers to the designated successor to the throne.
    • الرؤية 2030 (Al-Ru’ya 2030): Vision 2030. Saudi Arabia’s ambitious long-term plan to diversify its economy, develop public service sectors, and enhance its global standing.
    • سوق العقارات (Suq al-Aqar): Real Estate Market. The market for buying, selling, and renting land and buildings.
    • الشفافية والوضوح (Al-Shafafiya wal-Wuduh): Transparency and Clarity. Principles emphasizing openness and clear communication in procedures and regulations.
    • الإنفاق والاستهلاك (Al-Infaq wal-Istihlak): Spending and Consumption. Economic activities related to the expenditure of money on goods and services.
    • الإسكان (Al-Iskan): Housing. The provision of shelter and homes for people.
    • قطاع السياحة والضيافة (Qita’ al-Siyaha wal-Dhiyafa): Tourism and Hospitality Sector. Industries focused on providing services to travelers and guests.
    • الأراضي البيضاء (Al-Aradi al-Bayda’): White Land. Undeveloped urban land, often subject to fees in Saudi Arabia to encourage development.
    • حزب الله (Hizbullah): Hezbollah (Party of God). A Lebanese Shia Islamist political party and militant group.
    • اليمين المتطرف (Al-Yamin al-Mutatarif): Far-Right. The extreme right wing of the political spectrum, often associated with nationalism and conservative social views.
    • مجلس الاتحاد الأوروبي (Majlis al-Ittihad al-Urubbi): Council of the European Union. One of the main decision-making bodies of the European Union.
    • أونروا (UNRWA): United Nations Relief and Works Agency for Palestine Refugees in the Near East. A UN agency providing assistance and protection to Palestinian refugees.
    • هدنة (Hudna): Truce or Ceasefire. A temporary suspension of fighting.
    • الرئيس الأمريكي (Al-Ra’is al-Amriki): The American President. The head of state and government of the United States.
    • رسوم جمركية (Rusum Jumrukiyya): Customs Duties or Tariffs. Taxes imposed on imported or exported goods.
    • أوبك + (OPEC+): A group of oil-producing countries consisting of the 13 OPEC members and several non-OPEC countries, including Russia.
    • المخزونات النفطية (Al-Makhzunat al-Naftiyya): Oil Reserves or Stockpiles. Stored quantities of crude oil and petroleum products.
    • المعتمرين والمعتكفين (Al-Mu’tamirin wal-Mu’takifin): Umrah Pilgrims and Those Observing I’tikaf. Muslims performing the lesser pilgrimage to Mecca and those in spiritual retreat in mosques, especially during Ramadan.
    • موانئ (Mawani): Ports. The Saudi Ports Authority.
    • الحاويات (Al-Hawiyat): Containers. Large standardized boxes used for transporting goods.
    • عيد الفطر (Eid al-Fitr): The Festival of Breaking the Fast. A major Islamic holiday marking the end of Ramadan.
    • الحنيذ (Al-Hanith): A traditional Yemeni (and also Saudi) dish of slow-cooked lamb or goat, often prepared in an underground oven.

    Briefing Document: Analysis of “Al Riyadh” Newspaper Excerpts (April 1, 2025)

    This briefing document summarizes the main themes and important information presented in the provided excerpts from the April 1, 2025, issue of the Saudi Arabian newspaper “Al Riyadh.” The excerpts cover a range of domestic and international news, including economic developments, social and cultural events, and political updates.

    Key Themes and Important Ideas/Facts:

    1. Saudi Arabian Economic Developments and Vision 2030:

    • Real Estate Market Regulation: A significant focus is placed on the directives of the Crown Prince regarding the regulation of the real estate market in Riyadh. Ministers emphasized that these directives come at a crucial time to balance supply and demand and enhance market stability.
    • Quote: “” (Ministers affirmed in televised statements yesterday that the directives of His Royal Highness the Crown Prince, President of the Council of Ministers, Prince Mohammed bin Salman bin Abdulaziz Al Saud – may God protect him – regarding the regulation of the real estate market in Riyadh came at an important time, as they contribute to achieving balance between supply and demand and enhance market stability).
    • The Minister of Economy and Planning highlighted that regulatory intervention will positively impact the economy beyond the real estate sector, boosting spending and consumption.
    • The CEO of the Royal Commission for Riyadh City announced immediate implementation of the directives, focusing on providing developed residential land and launching a platform for receiving and processing applications.
    • Efforts are underway to expedite the announcement of land availability and monitor procedures to ensure transparency and clarity, aiming to protect the market from harmful practices and provide a suitable residential environment while supporting commercial investment.
    • These efforts align with the ambition to make Riyadh one of the top ten economic cities globally by 2030.
    • The article mentions forthcoming approvals on proposed amendments to land fees and the regulation of the relationship between lessors and lessees, which will contribute to balancing the interests of all parties in the residential and commercial rental markets and enhancing their attractiveness.
    • Tourism Sector Growth: A strategic partnership between the Ministry of Tourism and the Ministry of Investment was announced to support the Saudi Hotels and Hospitality Exhibition, aiming to boost growth in these sectors.
    • Quote:.” (Both the Ministry of Tourism and the Ministry of Investment announced the signing of a strategic partnership aimed at supporting the Saudi Hotels and Hospitality Exhibition…).
    • This aligns with Vision 2030 goals of attracting 150 million tourists and investing over a trillion US dollars in the sector over the next decade, positioning Saudi Arabia as a leading global tourism investment destination.
    • The exhibition serves as a platform for networking and exploring opportunities within the tourism and hospitality sectors.
    • The World Travel and Tourism Council projects the Saudi tourism sector’s contribution to the national economy to reach $222.9 billion by 2034, approximately 16% of the total GDP, creating over 3.6 million jobs nationwide, meaning one in five employees will be in tourism.
    • Economic Activity in Mecca: The article highlights significant economic activity related to road stations in Mecca, noting their crucial role in accommodating the large numbers of Umrah and Itikaf pilgrims.
    • The development of these stations with modern services and increased capacity is seen as a way to manage congestion effectively.
    • The “Al-Sharay’a” road leading to Mecca is witnessing intense competition among companies to build new fuel stations.
    • The number of fuel stations in Mecca is reported to be 955, and over 10,000 across the Kingdom, indicating the importance of this sector.
    • Extension of Fee Collection on Containers: The “Mawani” (Saudi Ports Authority) announced an extension for collecting fees on containers transported from King Abdulaziz Port in Dammam to the Dry Port in Riyadh via railway, aiming to improve operational efficiency and service levels.

    2. International Political and Economic Developments:

    • Syrian Political Situation: The formation of a new transitional government in Syria was announced, with Ahmed Al-Shara’a stating that they rejected any political quotas in its formation, aiming for national construction at all levels. The government faces the challenge of gaining the trust of Western countries and the international community to potentially lift sanctions.
    • Lebanon-Israel Tensions: Lebanese General Security announced the arrest of suspects following rocket launches towards Israeli territories, which followed Israeli shelling in southern Beirut. This represents a dangerous escalation since the cessation of hostilities between Hezbollah and Israel in late November. Israel retaliated by striking a site it claimed was used by Hezbollah to store missiles.
    • French Far-Right Leader Convicted of Misuse of Funds: Marine Le Pen, leader of the French far-right party National Rally, was convicted by a French court of misusing European Union funds. A ruling on potential sanctions, including ineligibility for the 2027 presidential elections, is expected soon, which could significantly alter the French political landscape.
    • Stalled Negotiations in Gaza: Details emerged of a “horrific massacre” in Rafah, where Israeli forces killed 15 members of rescue teams, including a UNRWA employee. Negotiations for the second phase of a ceasefire agreement are reportedly stalled due to significant gaps between the two sides. Hamas demands a clear timeline for the second phase and a complete halt to the war, which the Israeli government rejects.
    • Trump’s Trade Policies and Global Economic Impact: An opinion piece discusses the potential impact of former US President Trump’s threats to impose a 25% tariff on all vehicles manufactured outside the US. The author argues that this could lead to a 10% average inflation in car prices and negatively affect consumers and the automotive industry, as even American-made cars contain imported parts. The long-term effect could be a situation akin to “Cubanization,” where Americans hold onto old cars for extended periods due to the high cost of new ones.
    • Oil Market Volatility: Oil prices declined despite warnings from Trump about potential tariffs on Russian crude buyers if Moscow hinders efforts to end the war in Ukraine. The article also mentions Saudi Arabia’s move to lower crude prices for Asian buyers and Iran’s reduction of light crude prices. Another article highlights the dominance of supply risks in oil markets, with prices falling despite tariff warnings on Russian oil.
    • Gold Price Surge and Global Stock Market Decline: Gold reached a record high as concerns over Trump’s potential tariffs and a global trade war intensified. Global stock markets sharply declined following Trump’s statements indicating broad tariffs. Analysts express concerns about the lack of a consistent approach from the Trump administration, creating uncertainty in the markets and increasing recession fears.

    3. Saudi Arabian Social and Cultural Events:

    • Eid Al-Fitr Celebrations: Several short articles and photos depict Eid Al-Fitr celebrations across Saudi Arabia, including in Qassim, Al-Kharj (under the patronage of Prince Fahd bin Mohammed), Al-Baha, Madinah, Rafha, and Taif (which recorded over 200,000 visitors to its Eid festivities). These highlights emphasize the traditions, joy, and community spirit associated with the holiday.
    • Halu Al-Humr (Sweet Red Dish) and Henidh (Slow-Cooked Lamb): An article describes “Halu Al-Humr” as a characteristic flavor of Hijazi Eid celebrations and details the preparation and significance of “Henidh” as a prominent traditional dish in the southern region, emphasizing its cultural heritage and the communal aspect of its preparation and consumption during Eid.
    • “Ila Ibni” (To My Son) Film: The movie “Ila Ibni,” starring Saudi actor Faisal and his London-based son Adam, premiered during Eid Al-Fitr. The film explores the relationship between a father who returns to Abha after years in the UK and his son who he hasn’t seen since leaving 12 years prior, suggesting a family drama with lasting consequences.
    • Ramadan Television Series Review: An article reviews several Ramadan television series, including “Lam Shamsia” (Umbrella), “Talk to Me Every Day,” “JAC 2,” “My Aunt Noura,” and “Saree’ Saree’ Al-A’ma” (Blind Fast). It analyzes their popularity, themes, and production quality, highlighting the success of some series and the shortcomings of others. “Saree’ Saree’ Al-A’ma,” based on a novel, is noted for its high viewership and resonance with Najdi society and history.

    4. Other Notable Points:

    • Opinion Piece on Eid and Progress: An opinion piece reflects on Eid Al-Fitr as a time for joy and emphasizes the significant development and progress in Riyadh under the leadership of the Crown Prince, linking it to the Vision 2030 objectives.
    • Opinion Piece on Real Estate Market: Dr. Talal Al-Harbi discusses the recent unjustified rise in real estate prices in Riyadh and praises the Crown Prince’s directives for regulating the market as a crucial step towards achieving Vision 2030 goals, including increased homeownership and improved quality of life.
    • Opinion Piece on “After Eid” Procrastination: Fahd Al-Ahmari encourages readers to start pursuing their goals now rather than postponing them “after Eid,” emphasizing that life’s demands are not dictated by holidays.
    • Opinion Piece on Crown Prince’s Leadership: Dr. Khaled Ramadan lauds the Crown Prince’s exceptional leadership and his role in shaping Vision 2030, highlighting his focus on innovation, creativity, and sustainable development.
    • Sports News: The excerpts include updates on Saudi football, including the Saudi King’s Cup semi-final match between Al-Ittihad and Al-Shabab, Al-Hilal’s preparations for upcoming matches, and comments from Real Madrid coach Carlo Ancelotti on Kylian Mbappé’s potential. There is also a commentary on the Saudi national football team’s challenging path to the 2026 World Cup and the emergence of young talents.

    This collection of excerpts provides a snapshot of key issues and events of interest in Saudi Arabia and the wider world as of April 1, 2025, as reported by “Al Riyadh” newspaper. The emphasis on economic development aligned with Vision 2030, alongside local social and cultural events, highlights the Kingdom’s ongoing transformation and its engagement with regional and global affairs.

    Saudi Arabia & Global Economic Briefings

    ### Q1: What were the main directives of the Crown Prince regarding the real estate market in Riyadh, and what is their intended impact?

    The Crown Prince’s directives focused on organizing the real estate market in Riyadh to achieve a balance between supply and demand and enhance market stability. Ministers emphasized that these directives came at a crucial time. The goal is to provide a suitable residential environment for citizens and support commercial investment, aligning with the ambition to make Riyadh one of the ten largest economic cities globally by 2030. Key actions include the immediate implementation of providing developed residential lands and the launch of a platform to receive and process requests. Coordination with relevant authorities aims to expedite the announcement and follow-up of land offerings for real estate products at reasonable prices. The directives also stress transparency and clarity in the implementation of procedures and task relevant authorities with developing and monitoring the real estate market to prevent harmful practices. Furthermore, a study to regulate the relationship between landlords and tenants and balance the interests of all parties in the residential and commercial rental markets is underway to enhance the attractiveness of these markets.

    ### Q2: How is the tourism sector expected to contribute to the Saudi economy by 2034, and what initiatives are in place to support this growth?

    The tourism sector in Saudi Arabia is projected to contribute 16% to the total Saudi economy by 2034, amounting to approximately $222.9 billion USD. This growth is also expected to create more than 3.6 million job opportunities across the kingdom, with one in five employees working in the tourism sector. To support this expansion, the Ministry of Tourism and the Ministry of Investment have partnered to support the Saudi Hotels and Hospitality Exhibition, which will take place in Riyadh. This exhibition aims to foster investment, development, and collaboration within the sector, providing a central platform for professionals and leaders to shape the future of tourism and hospitality in the kingdom. Saudi Arabia’s Vision 2030 targets attracting 150 million tourists and investing over $800 billion USD in the sector over the next decade, positioning the kingdom as a major global investment destination in tourism.

    ### Q3: What are the latest developments regarding the negotiations for the second phase of a ceasefire in Gaza?

    Negotiations for the second phase of a ceasefire agreement in Gaza are reportedly stalled due to significant gaps between the two parties (Israel and Hamas) despite ongoing discussions with mediators. The main points of contention include Hamas’s demand for a clear timeline for the second phase, encompassing a full ceasefire and withdrawal of Israeli forces, which contrasts with Israel’s reluctance to commit to these terms at this stage. While discussions on proposed compromises, including an Israeli proposal, are ongoing, no tangible progress has been reported.

    ### Q4: What is the significance of the Eid al-Fitr celebrations highlighted in the article across different regions of Saudi Arabia?

    The article emphasizes the widespread celebration of Eid al-Fitr across various regions of Saudi Arabia, showcasing the traditions, values, and social cohesion inherent in these festivities. In Riyadh, the focus is on the Crown Prince’s directives to improve the real estate market as an “Eid gift” to citizens. Regions like Qassim, Al-Baha, Al-Kharj, Rafha, Jazan, and Medina are depicted holding large celebrations with traditional customs, folk dances, and local cuisine, reflecting the joy and unity of the occasion. Taif recorded over 200,000 visitors to its Eid festivities. The article also highlights specific culinary traditions associated with Eid in the Hijaz region, such as “Halo Al-Humr” and the preparation of “Al-Hanith” in the southern region, underscoring the cultural richness of the celebrations.

    ### Q5: What are the potential consequences of the proposed US tariffs on imported vehicles, as discussed in the article?

    The article outlines several potential negative consequences of proposed 25% tariffs on all vehicles manufactured outside the US. Experts and industry leaders fear these tariffs will lead to increased costs for consumers, suppliers, and car companies. It’s highlighted that no car is 100% American-made, meaning imported parts could be subject to the tariffs. If implemented, the tariffs could cause an average 10% inflation in car prices, increasing the average monthly car payment by $75 to $85. Long-term effects could include a “Cubanization” of the American car market, where people hold onto older vehicles for extended periods due to the high cost of new cars. The article emphasizes that the ultimate victim of these tariffs would be the consumer.

    ### Q6: What recent developments have occurred in the oil market, including the impact of potential tariffs and production adjustments?

    The oil market is experiencing volatility influenced by factors such as potential US tariffs on oil imports (specifically targeting Iranian and Venezuelan oil, as well as entities related to China and Russia), drawdowns in fuel inventories, and OPEC+ production policies. Despite warnings from President Trump about potential tariffs on buyers of Russian crude oil if Moscow hinders efforts to end the war in Ukraine, oil prices have declined. Saudi Arabia is reportedly planning to lower crude oil prices for Asian buyers, following sharp declines in benchmark prices. Iran has also reduced the price of its light crude for Asian buyers. OPEC+’s decision on whether to continue voluntary production cuts will significantly impact the balance between supply and demand. Concerns about a potential global economic slowdown are also influencing market sentiment.

    ### Q7: What is the significance of the strategic partnership between the Saudi Ministries of Tourism and Investment, and what are the key features of the Saudi Hotels and Hospitality Exhibition?

    The strategic partnership between the Saudi Ministries of Tourism and Investment aims to bolster the growth of the tourism and hospitality sectors in the kingdom. A key component of this collaboration is the Saudi Hotels and Hospitality Exhibition, scheduled to be held in Riyadh. This exhibition serves as a vital platform for networking, exploring opportunities, and forging deals among professionals and leaders in the tourism and hospitality industries, including investors, hotel companies, designers, and suppliers. It is expected to attract over 8,000 specialists and more than 250 exhibiting entities, along with over 60 expert speakers. The exhibition will also host the Hospitality Leaders Summit, focusing on the rapid growth in the Saudi hospitality sector, driven by mega-projects like the Red Sea Project, Amaala, Diriyah Gate, and NEOM. The event aims to provide momentum for the tourism and hospitality sectors, offering exceptional investment opportunities.

    ### Q8: What are the implications of the extended deadline for collecting fees on containers transported from Dammam port to Riyadh?

    The “Mawani” (Saudi Ports Authority) has extended the deadline for collecting due fees on containers transported from King Abdulaziz Port in Dammam to the dry port in Riyadh via the Saudi Railway network. The new deadline is July 15, 2025, extended from April 15, 2025. This extension is part of the authority’s ongoing efforts to enhance the efficiency of operational processes, improve the level of services provided, and protect the rights of beneficiaries. The authority has emphasized the necessity for all cargo owners and customs brokers to continue with pre-registration through Mawani’s official website and to complete the required procedures, including invoice creation and payment. This extension and the emphasis on pre-registration likely aim to streamline the flow of goods, reduce congestion, and provide more flexibility for businesses involved in the import and transportation of goods through these key ports.

    Riyadh Real Estate Market Stabilization Directives

    The sources indicate a significant focus on the Saudi real estate market, particularly in Riyadh, stemming from directives issued by the Crown Prince. These directives are aimed at enhancing the stability of the real estate market.

    Several key aspects of these directives and their anticipated impact are highlighted:

    • Achieving Balance Between Supply and Demand: The directives are intended to achieve a balance between the supply and demand of real estate in Riyadh. This imbalance has been a long-standing issue in the sector.
    • Providing Diverse and Affordable Housing: The goal is to offer a variety of real estate products at reasonable prices to meet the needs of both citizens and the private sector. This includes providing developed residential land.
    • Immediate Implementation: The CEO of the Royal Commission for Riyadh City stated that they will immediately begin implementing the directives by providing developed residential lands and launching a platform to receive and process applications.
    • Coordination and Monitoring: There will be coordination with relevant authorities to expedite the announcement of land availability and continuous monitoring of real estate market prices, with regular reports being submitted.
    • Positive Economic Impact: The Minister of Economy and Planning emphasized that this regulatory intervention in the real estate market will positively impact other sectors and overall spending, thus benefiting the economy as a whole.
    • Curbing Hoarding and Price Reduction: The initiatives are expected to curb the hoarding of undeveloped land (white land) and boost construction, which in turn is anticipated to lead to a decrease in real estate prices.
    • Addressing Market Imbalances: The directives are a policy to provide an opportunity for the market to balance itself. If this balance is not achieved through market forces or time, intervention from the highest levels of authority is considered the optimal and quickest solution.
    • Specific Measures: The directives encompass several key measures, including:
    • Lifting the ban on vast areas of stopped land.
    • Adjusting the white land fees system.
    • Regulating the relationship between landlords and tenants.
    • Monitoring real estate prices.
    • Focus on Increased Supply: The primary goal of these measures in the current phase is to increase the supply of real estate to create a surplus over demand, thus ensuring prices remain reasonable and suitable housing options are available to citizens.
    • Fair Pricing Based on Quality: Price increases should be driven by competition on the quality and features of services offered by developers or property owners, rather than exploitation of limited availability. The concept of “what’s available is only for those who can afford it” is explicitly rejected.
    • Empowering Saudi Youth: These decisions are deeply rooted in a human dimension, with the empowerment of Saudi youth being a central goal.
    • Contribution to Vision 2030 and Sustainable Development: These efforts are in line with the state’s commitment to providing a decent life for citizens, achieving sustainable development, and realizing the comprehensive vision for organizing the real estate market and providing suitable housing.
    • Expected Positive Outcomes: The directives are expected to have significant positive impacts on the economy and society in general, and specifically in Riyadh, by regulating the market, ensuring housing availability, and enabling citizens to own their homes.
    • Combating Monopoly: The initiatives also aim to combat the monopoly of real estate.

    In conclusion, the Saudi government, under the direction of the Crown Prince, is actively intervening in the real estate market, particularly in Riyadh, through a series of measures designed to increase supply, balance supply and demand, stabilize prices, and provide affordable housing options for its citizens. These efforts are seen as crucial for economic stability, social well-being, and achieving the broader goals of Vision 2030.

    Lebanon and Israel: Escalation and Response

    The sources discuss recent incidents involving rocket launches from Lebanon towards Israel and subsequent Israeli responses.

    Here’s a summary of the key points:

    • Rocket Launches: The Lebanese General Security announced the arrest of suspected individuals following rocket launches towards Israeli territories. These launches occurred on March 22nd and 28th.
    • Israeli Response: Following the rocket launches, Israel conducted shelling on the southern suburb of Beirut. Additionally, after two rockets were launched on a Friday, Israel carried out an airstrike targeting the southern suburb of Beirut. Israel claimed this location was used by Hezbollah to store missiles.
    • Escalation and Ceasefire: These events are described as the most dangerous escalation since the declaration of a ceasefire between Hezbollah and Israel in late November. The Israeli airstrike was reported as the first time Israel had struck Lebanese territory since this ceasefire.
    • Lebanese Actions: The Lebanese General Security has intensified its intelligence operations to uncover those involved in the rocket launches. They have arrested a number of suspects and initiated investigations under the supervision of the competent judiciary to determine responsibilities and take appropriate legal measures.
    • Hezbollah Involvement: While the sources don’t explicitly claim Hezbollah was behind the specific rocket launches in March, Israel’s targeting of a location allegedly used by Hezbollah suggests their continued involvement in the conflict dynamic. The prior ceasefire was also between Hezbollah and Israel.

    In summary, the sources highlight a recent escalation in the ongoing tensions between Lebanon and Israel, marked by rocket fire from Lebanese territory and retaliatory strikes by Israel, including the first Israeli airstrike since the ceasefire with Hezbollah. The Lebanese authorities have responded by arresting suspects involved in the rocket launches.

    Trump Administration Trade Tariffs and Implications

    The sources discuss trade tariffs in the context of the Trump administration.

    According to one source, Trump insisted that certain tariffs were permanent. However, the source argues that the practical reality suggests these tariffs cannot continue. This is primarily due to uncertainty regarding how the tariffs will be implemented.

    The source specifically discusses the potential impact on the automotive industry:

    • The tariffs are predicted to increase the cost of new cars by thousands of dollars because car manufacturers will likely be unable to absorb the entirety of the increased costs.
    • The source deems the notion of moving the production of car parts to the United States unrealistic due to the significant financial investment (billions of dollars) and the lengthy time frame (at least three years) required to establish new manufacturing plants.
    • The source suggests that even if the tariffs were to be revised or exemptions granted, the automotive sector might not fully recover.

    Another source indicates that Trump warned during the week that he might impose secondary customs duties on oil purchases not from Russia. This threat was contingent on Russia not being open to efforts to establish a ceasefire with Ukraine. This suggests that Trump considered using tariffs beyond traditional trade disputes, potentially as a tool in international diplomacy.

    In summary, the sources indicate that while the Trump administration implemented trade tariffs and insisted on their permanence, there were concerns about their practical sustainability and potential negative impacts, particularly on the automotive industry. Additionally, Trump also considered using tariffs as a potential leverage in foreign policy matters, such as the conflict in Ukraine.

    Global Markets React to Trade Tariff Concerns and Recession Fears

    Based on the sources, there have been notable movements in global stock markets, largely influenced by concerns surrounding potential trade tariffs from the Trump administration and growing fears of a potential economic recession in the United States.

    Here’s a breakdown of the key observations:

    • Decline in Multiple Markets: The European Stoxx 600 index experienced a decline, reaching its lowest level in nearly eight weeks. Similarly, major stock indexes in Frankfurt, London, and Paris also saw decreases. In the United States, S&P 500 and Nasdaq futures also fell. Asian markets were not immune, with the Nikkei index in Japan suffering a sharp drop.
    • Link to Trump’s Trade Policies: These declines in stock markets are attributed, in part, to the potential imposition of new trade tariffs by former US President Donald Trump. Specifically, concerns about tariffs on cars were noted as impacting shares of car manufacturers. As we discussed previously, the uncertainty and potential cost increases associated with these tariffs are likely contributing to investor anxiety.
    • Fears of Economic Slowdown: The sources also indicate increasing concerns about a potential economic recession in the United States, exacerbated by the anticipated effects of Trump’s tariffs. Goldman Sachs reportedly increased its probability forecast for a recession in the coming twelve months. These recession fears further dampen investor sentiment and contribute to stock market declines.
    • Investor Strategy: In response to this uncertainty, investors appear to be betting on a slowdown in trade and economic growth. There’s an anticipation that inflation might exceed temporary gains, potentially leading the Federal Reserve to cut interest rates.
    • Safe-Haven Assets: Amidst the stock market volatility, gold prices surged, with the spot price of gold and US gold futures both experiencing significant increases. Gold is traditionally seen as a safe-haven asset during times of political and economic uncertainty. As one analyst noted, “increasing levels of concern in the markets ahead of reciprocal US tariff announcements” are keeping demand for gold high as a safe haven.
    • Bond Market Activity: The sources also mention a drop in US Treasury bond yields and German bund yields, which can sometimes be indicative of investors seeking safer assets during periods of economic uncertainty.

    In summary, the recent performance of global stock markets, as described in the sources, reflects a cautious and somewhat negative sentiment among investors. This appears to be driven by the looming threat and potential impact of trade tariffs, particularly those linked to the Trump administration, coupled with growing worries about a possible economic slowdown in the US. This environment has also led to increased interest in safe-haven assets like gold. As we discussed previously, the potential for significant cost increases and disruptions in sectors like the automotive industry due to tariffs likely contribute to this market apprehension.

    Gaza: Ongoing Conflict, Casualties, and Stalled Negotiations

    The sources provide a grim picture of the aftermath of conflict in Gaza, characterized by ongoing violence, loss of life, and a lack of a stable resolution.

    Here are the key points regarding the situation in Gaza based on the provided sources:

    • Continued Military Activity and Casualties: The sources detail numerous incidents of Israeli military actions within Gaza after periods of conflict. These actions include shelling and airstrikes in areas like Rafah, Khan Younis, and Gaza City. These actions have resulted in significant Palestinian casualties, including civilians and medical personnel.
    • One report details a “horrific massacre” in Rafah, where 15 members of rescue teams were killed by Israeli forces after an eight-day communication blackout. Among those killed was a staff member of UNRWA.
    • Another incident reports the killing of eight paramedics of the Palestinian Red Crescent in Rafah due to Israeli shelling while they were trying to provide aid to the injured. One paramedic remained missing at the time of the report.
    • The Palestinian Ministry of Foreign Affairs and Expatriates and the Moroccan Ministry of Foreign Affairs condemned the killing of the paramedics as a “war crime” that necessitates international accountability. They stated that this act, along with other actions, falls under a war of genocide and forced displacement against the Palestinian people.
    • Israeli shelling also reportedly targeted a civilian car in the west of Gaza City and a house in the Al-Shujaiya neighborhood, resulting in further casualties.
    • Ongoing Negotiations and Disagreements: Despite the ongoing violence, there are reports of indirect negotiations between Israel and Hamas regarding a potential agreement. However, significant points of disagreement remain, hindering progress.
    • Key areas of contention include Israel’s refusal to begin discussing the second phase of an agreement and a ceasefire before it starts.
    • Hamas is demanding a clear timeline for the second phase and a permanent ceasefire, along with the release of a large number of Palestinian prisoners.
    • Hamas also insists on a full withdrawal of Israeli forces from the Gaza Strip and clear international guarantees against the resumption of fighting, conditions that Israel rejects.
    • Israeli Perspective on Hamas: An Israeli official close to Prime Minister Netanyahu stated that they are observing changes in Hamas’s position as a result of military pressure and that Hamas has begun to show “signs of retreat”.

    In summary, the aftermath of conflict in Gaza, as depicted in the sources, is marked by continued violence and casualties attributed to Israeli military actions. Simultaneously, indirect negotiations for a potential agreement are underway, but significant disagreements between Israel and Hamas persist regarding key issues such as a ceasefire, troop withdrawal, and prisoner release. The international community and Palestinian authorities strongly condemn the loss of civilian and humanitarian lives.

    Main Headings

    • توجيهات ولي العهد تعزز استقرار السوق العقاري The Crown Prince’s directives enhance the stability of the real estate market.
    • إسهام قطاع السياحة في الاقتصاد السعودي % 16بحلول 2034 The tourism sector’s contribution to the Saudi economy is expected to reach 16% by 2034.
    • الشرع: تاريخ جديد لسورية وأمامنا طريق طويل وشاق Al-Sharaa: A new history for Syria, and we have a long and arduous road ahead of us.
    • فرحة أهالي الرياض خالد الربيش The joy of the people of Riyadh, Khaled Al-Rabish
    • فرنسا: إدانة زعيمة اليمين المتطرف بالفساد France: Far-right leader convicted of corruption
    • لبنان يوقف مشتبهين بعد إطلاق صواريخ على (إسرائيل) Lebanon arrests suspects after rockets fired at Israel
    • تعرقل المفاوضات حول المرحلة الثانية في غزة Negotiations on the second phase in Gaza are hindered.
    • فيصل بن مشعل يرعى احتفالات القصيم Faisal bin Mishaal sponsors Qassim celebrations
    • أمير حائل يعــايـــد أيتام رفاق Prince of Hail congratulates the orphans of Rafakab
    • نائب أمير الرياض يعزي رياض العتيبي Deputy Emir of Riyadh offers condolences to Riyadh Al-Otaibi
    • محافظ الخرج يرعى حفل الأهالي Al-Kharj Governor sponsors the residents’ celebration
    • أهالي الباحة يحتفلون بعيد الفطر Al Baha residents celebrate Eid al-Fitr
    • العيد في المدينة المنورة.. عادات أصيلة وذكريات متوارثة Eid in Medina: Authentic customs and inherited memories
    • المعالم الأثرية تجذب الأهالي والمقيمين في عيد الأحساء Archaeological landmarks attract locals and residents during Al-Ahsa Eid
    • عيد جازان.. عادات عريقة Jazan Eid… ancient customs
    • أهالي رفحاء يحتفلون في أجواء من الفرح والبهجة Rafha residents celebrate in an atmosphere of joy and happiness.
    • فعاليات عيد الطائف تجذب 200ألف زائر Taif Eid events attract 200,000 visitors
    • الألعاب النارية تعانق سماء المملكة Fireworks take over the Kingdom’s sky
    • الجوازات تحتفل مع المسافرين بعيد الفطر Passports celebrate Eid al-Fitr with travelers
    • الخواضة.. موروث شعبي يزين موائد العيد Al-Khawada: a popular heritage that decorates Eid tables
    • المطازيز.. أكلة شعبية تشتهر في القصيم Matazeez: a popular dish in Qassim
    • الحـنيـذ.. عــبق الجــنوب Al-Haneeth…the fragrance of the south
    • القرص.. مذاق سعودي يعكس تنوع المناطق The disc… a Saudi flavor that reflects the diversity of the regions
    • حلاو الحمر نكهة الأعياد الحجازية Halawa Al Hamar, the flavor of Hijazi holidays
    • تنظيم محطات الطرق بمكة يستوعب «نفرة» المعتمرين والمعتكفين The organization of bus stations in Mecca accommodates the influx of pilgrims and those performing I’tikaf.
    • صناعة السيارات.. رحلة إلى المجهول The automotive industry… a journey into the unknown
    • تمديد تحصيل الأجور على الحاويات المنقولة من ميناء الدمام إلى الرياض Extension of fee collection for containers transported from Dammam Port to Riyadh
    • 222 مليون دولار إسهام قطاع السياحة بالاقتصاد السعودي بحلول The tourism sector’s contribution to the Saudi economy will reach $222 million by 2020.
    • النفط يتراجع رغم تحذيرات الرسوم الجمركية على مشتري الخام الروسي Oil falls despite tariff warnings on Russian crude buyers
    • المملكة تتجه إلى خفض أسعار خامها للمشترين الآسيويين The Kingdom is moving to reduce the prices of its crude oil for Asian buyers.
    • هيمنة مخاطر العرض على أسواق النفط Supply risks dominate oil markets
    • الذهب يسجل أعلى مستوى قياسي مع تفاقم الرسوم الجمركية.. والأسهم العالمية تنخفض Gold hits record high as tariffs escalate, global stocks fall
    • ليلة َ دامية في قطاع غزة.. والاحتلال يصدر أوامر إخلاء جديدة A bloody night in the Gaza Strip… and the occupation issues new evacuation orders.
    • مجزرة مروعة بحق طواقم الإنقاذ في رفح.. والخارجية الفلسطينية: جريمة حرب A horrific massacre against rescue crews in Rafah… and the Palestinian Foreign Ministry: A war crime.
    • الشرع: رفضنا المحاصصة في تشكيل الحكومة السورية Al-Sharaa: We reject quotas in forming the Syrian government.
    • لبنان: توقيف مشتبهين بعد إطلاق صواريخ باتجاه إسرائيل Lebanon: Suspects Arrested After Launching Rockets Towards Israel
    • إيران تتوعد بتوجيه «ضربة شديدة» لمن يهاجمها Iran vows to deliver a “severe blow” to anyone who attacks it.
    • الجيش الصومالي يدمر مخابئ حركة الشباب Somali army destroys Al-Shabaab hideouts
    • القضاء الفرنسي يدين لوبان زعيمة اليمين المتطرف بالفساد French judiciary convicts far-right leader Le Pen of corruption
    • سوريون يحتفلون بـ «عيد الأعياد» بعد إطاحة الأسد Syrians celebrate Eid al-Adha after Assad’s ouster
    • بريطانيا تدعو المجتمع الدولي إلى التعاون للقضاء على مهربي البشر Britain calls on the international community to cooperate to eliminate human traffickers.
    • سباق صيني أميركي لإنتاج الشرائح الدماغية.. ً وصولا إلى التجارب البشرية A Chinese-American race to produce brain chips… leading to human trials
    • الدراما في مرحلة الإنتاج الموسمي. Drama in seasonal production.
    • شارع الأعشى» و«يوميات رجل عازب..» من قلم الرواية لأرقام الشاشة “Al-A’sha Street” and “Diary of a Single Man” from the novelist’s pen to the screen
    • إلهام علي.. نجومية متفردة رغم أخطاء المدققين Ilham Ali: Unique stardom despite proofreaders’ errors
    • لام شمسية» دراما تخلع القناع عن الخطر الأقرب “Lam Shamsya” is a drama that unveils the closest danger.
    • الجسمي يتعدى المليار مشاهدة في «اتكلم كل يوم يومين» Al Jasmi’s “I Talk Every Day Two Days” surpasses one billion views
    • ضبط أسعار العقارات في الرياض Regulating real estate prices in Riyadh
    • مكافحة..» احتكار العقارات Combating real estate monopoly
    • شؤون عادل الحربي مواعيدنا التي «بعد العيد! Adel Al-Harbi’s Affairs Our appointments after Eid!
    • بصائر: فهد الأحمري كيف يساهم رمضان في جودة الحياة؟ Insights: Fahd Al-Ahmari: How does Ramadan contribute to quality of life?
    • التعامل مع الأفكار الجديدة Dealing with new ideas
    • مطلق النفيسة.. رحمه الله Mutlaq Al-Nafisa.. May God have mercy on him
    • على العهد.. إلى الأبد On the covenant… forever
    • البحـث ومصداقيـة البـاحــث Research and researcher credibility
    • الإرجاف والإرهاب وجهان لعملة واحدة Fearmongering and terrorism are two sides of the same coin.
    • فلسفة العيد Philosophy of Eid
    • فن المزج بين الجمال والوظيفة The art of combining beauty and function
    • كلاسيكو العيد يجمع الليث بالعميد The Eid classic brings together Al-Leith and Al-Ameed
    • بدون مقدمات: العيد عيدك يا عميد. هتان النجار Without further ado: Eid is your Eid, Dean. Hattan Al-Najjar
    • الاتحاد ينهي تحضيراته للشباب وغياب بيرجوين Al-Ittihad completes preparations for the youth team, with Bergwijn absent
    • الهلال يعاود تدريباته: وكانسيلو يسابق الوقت للعودة Al-Hilal resumes training: Cancelo is racing against time to return
    • القرعة الآسيـوية : عبدالعزيز فهد الفهد Asian draw: Abdulaziz Fahad Al-Fahad
    • أنشيلوتي: مبابي سيصبح «أسطورة» في ريال مدريد Ancelotti: Mbappé will become a “legend” at Real Madrid
    • الجوير» الحاضر والمستقبل Al-Juwair: Present and Future
    • مصيـر «الأخضر» لم يعد في ملعبـه The fate of the “Green” team is no longer in its own court
    • الحارس أكثر من نصف الفريق The goalkeeper is more than half of the team.
    • الموهبة لا تحتاج إلى فرصة Talent doesn’t need opportunity.
    • أكثر من ٍ 122مليون قاصد للحرمين الشريفين في شهر رمضان More than 122 million pilgrims visit the Two Holy Mosques during the month of Ramadan.
    • أملج تحتفي بعيد الفطر على أهازيج الفنون البحرية Umluj celebrates Eid al-Fitr with marine arts chants
    • العرضة» تتصدر احتفالات الباحة “Al-Ardah” tops Al-Baha celebrations

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • React.js Fundamentals: Concepts, Architecture, and Applications

    React.js Fundamentals: Concepts, Architecture, and Applications

    These resources offer a comprehensive introduction to React JS, covering its fundamental concepts like component architecture, JSX, virtual DOM, state management (including Redux), props, and event handling. They also discuss React Router for navigation, the use of hooks, and performance optimization techniques. Furthermore, the material outlines React’s lifecycle methods, conditional rendering, debugging, testing, and provides guidance on becoming a React developer, including prerequisites and common interview questions. The advantages and applications of React, alongside comparisons with Angular and React Native, are also explored.

    React Fundamentals Study Guide

    Quiz

    1. Explain the concept of state in React components. How is it initialized and updated?
    2. What are props in React? How are they different from state, and how are they passed between components?
    3. Describe the purpose of event handlers in React. Provide an example of how an event handler is defined and used.
    4. What is JSX? Why is it used in React, and how does it relate to JavaScript and HTML?
    5. Explain the concept of components in React. What are the two main types of components, and what are their key differences?
    6. What is conditional rendering in React? Describe two common methods for implementing it.
    7. Explain the component lifecycle in React. Briefly describe the purpose of componentDidMount and componentWillUnmount.
    8. What are keys in React lists? Why are they important, and what happens if they are not used correctly?
    9. Define the term “props” in React. What is this.props.children, and what are its possible values?
    10. Describe the purpose of setState in React. Why should you not directly modify the state object?

    Answer Key

    1. State in React components is a way to manage data that can change over time and affects the component’s rendering. It is initialized within the component’s constructor using this.state = { /* initial values */ }. State is updated asynchronously using the this.setState() method, which triggers a re-render of the component.
    2. Props (short for properties) are read-only data passed from a parent component to its child components. They are different from state because state is managed within the component itself and can be changed by the component, while props are external data passed down. Props are passed by including attributes with values on the child component when it is rendered in the parent.
    3. Event handlers in React are functions that are called in response to user interactions or other events, such as clicks, form submissions, or mouse movements. An event handler is typically defined as a method within a component and then passed as a prop to a JSX element. For example: <button onClick={this.handleClick}>Click Me</button>.
    4. JSX (JavaScript XML) is a syntax extension for JavaScript that allows you to write HTML-like structures directly within your JavaScript code. It is used in React to describe the user interface of components in a declarative way, making the code easier to read and understand. JSX is transformed into regular JavaScript function calls by tools like Babel.
    5. Components in React are reusable and independent pieces of UI logic. The two main types are functional components (plain JavaScript functions that return JSX) and class components (ES6 classes that extend React.Component and can have state and lifecycle methods). Functional components are simpler and often used for presentational purposes, while class components are more feature-rich and can manage stateful logic.
    6. Conditional rendering in React is the process of displaying different elements or components based on certain conditions. Two common methods are using if/else statements or ternary operators (condition ? <ComponentA /> : <ComponentB />) within the render method, or using short-circuit evaluation (condition && <ComponentA />).
    7. The component lifecycle in React refers to the series of events that occur from the moment a component is created and mounted onto the DOM to when it is unmounted and removed from the DOM. componentDidMount is a lifecycle method that is invoked immediately after a component is mounted (inserted into the tree). It is often used for tasks like fetching data or setting up subscriptions. componentWillUnmount is invoked immediately before a component is unmounted and destroyed. It is used for cleanup tasks like canceling network requests or removing event listeners.
    8. Keys in React lists are special string attributes that should be included when mapping over an array to create a list of elements. They are important because they help React identify which items in the list have changed, been added, or been removed. Without unique keys, React may not be able to efficiently update the DOM, potentially leading to performance issues and incorrect component state.
    9. Props in React are a mechanism for passing data from a parent component to its child components. this.props.children refers to any elements or components that are passed as children within the opening and closing tags of a component when it is rendered in its parent. Its possible values can be a single React element, an array of React elements, or undefined if no children are passed.
    10. setState in React is a method used in class components to update the component’s state. It accepts an object or a function that returns an object and schedules an update to the component’s state, eventually triggering a re-render. You should not directly modify the state object (e.g., this.state.count = 5) because React may not recognize the change and not re-render the component correctly. setState ensures that the component and its children are re-rendered with the updated state.

    Essay Format Questions

    1. Discuss the benefits of using a component-based architecture like React for building user interfaces. Explain how components promote reusability, maintainability, and scalability in web development.
    2. Compare and contrast state management in functional components using hooks (like useState and useReducer) with state management in class components using this.state and this.setState. When might you choose one approach over the other?
    3. Explain the flow of data in a typical React application that utilizes props and state. Describe how data originates, how it is passed down through the component tree, and how user interactions can lead to data changes.
    4. Discuss the role and importance of lifecycle methods in class components. Choose three lifecycle methods (e.g., componentDidMount, componentDidUpdate, componentWillUnmount) and explain the common use cases for each.
    5. Analyze the different approaches to conditional rendering in React (if/else, ternary operators, short-circuit evaluation, element variables). Provide scenarios where each approach might be most suitable and discuss their advantages and disadvantages.

    Glossary of Key Terms

    • Component: A reusable and independent building block of a React user interface, encapsulating its own logic and rendering.
    • State: A JavaScript object that holds data local to a component and controls its behavior and rendering over time. It is mutable and managed within the component.
    • Props (Properties): Data passed from a parent component to a child component. They are immutable from the child’s perspective.
    • JSX (JavaScript XML): A syntax extension for JavaScript that allows embedding HTML-like structures within JavaScript code, used in React to describe UI.
    • Event Handler: A function that is executed in response to a specific event (e.g., user interaction) occurring on a React element.
    • Conditional Rendering: The process of displaying different UI elements or components based on certain conditions in a React application.
    • Lifecycle Methods: Special methods in class components that are invoked at different stages of a component’s existence (mounting, updating, unmounting).
    • Keys: Special string attributes assigned to elements in a list rendered by React, used to uniquely identify each item for efficient updates.
    • setState(): A method used in class components to update the component’s state and trigger a re-render of the component and its children.
    • Functional Component: A simpler type of React component that is essentially a JavaScript function that accepts props as arguments and returns JSX.
    • Class Component: A more feature-rich type of React component that is an ES6 class, can have state and lifecycle methods, and uses a render() method to return JSX.
    • this.props.children: A special prop that refers to any content (JSX elements, other components) passed between the opening and closing tags of a component.
    • componentDidMount(): A lifecycle method invoked immediately after a component has been mounted to the DOM.
    • componentWillUnmount(): A lifecycle method invoked immediately before a component is unmounted and destroyed.
    • Hook: A special function in React that lets you “hook into” React state and lifecycle features from functional components. Examples include useState and useEffect.

    Briefing Document: React Fundamentals and Mario Game Development

    This document provides a detailed review of the main themes and important ideas presented in the provided sources, which cover fundamental concepts of React.js and a practical example of building a Mario game using React.

    Part 1: React Fundamentals

    This section outlines the core concepts of React.js as explained in the first source.

    Main Themes:

    • Ease of Learning: React is presented as easier to learn compared to other JavaScript frameworks like Angular.
    • “learning react is easier than learning other JavaScript Frameworks”
    • React’s simplicity is attributed to its component-based architecture, simpler file structure, flexible component model, and shorter dependency list.
    • Core Concepts: The source emphasizes several fundamental building blocks of React applications.
    • Components: The UI is built by composing reusable and independent pieces of code called components. Examples given include app.js, counter.js, and index.js.
    • “all the files that you can see inside the source are components of the real so app.js is one component counter. GS is one component index.js is one company”
    • JSX (JavaScript XML): React uses a syntax extension that allows writing HTML-like structures within JavaScript code.
    • “this right here the code that we are able to see is basically jsx syntax so basically this is a JavaScript code but we have written HTML inside the Javascript file so this is called GSX”
    • Props (Properties): Props are used to pass data from parent components to child components. They are read-only from the child’s perspective.
    • “react uses props to pass attributes from parent components to child components”
    • State: State allows creating dynamic and interactive components. It is private to a component and can be updated to trigger re-renders.
    • “UST state zero initializes account State variable with the initial value of zero and after that count holds the current count and set count is a function that updates the value so state in react is persistent across renders meaning count will retain the value until it’s updated by set count”
    • Event Handlers: These are functions that respond to user interactions (e.g., clicks) and can update the component’s state. Examples include increment, decrement, and reset functions.
    • “these functions are used to update the count State based on the user actions first of all we have the increment so it increases the count by five each time it is called”
    • Styling: CSS is used to style React components. The example mentions style.css and various CSS properties and techniques like font family, display, justify content, alignment, height, background color, hover effects, animations, keyframes, and media queries.
    • Component Lifecycle: React components have a lifecycle with different phases (initial, update, unmount), and lifecycle methods are called at specific points.
    • Conditional Rendering: React allows rendering different components or parts of the UI based on certain conditions. Methods include if/else statements, element variables, ternary operators, and short-circuit operators.
    • “conditional rendering is nothing but if a given statement is true then the if statement executes or else the L statement will execute”
    • Preventing Rendering: Components can prevent rendering by returning null from their render method.
    • “to do this return null instead of its render output”
    • Refs (References): Refs provide a way to access DOM elements or component instances directly.
    • Keys: Keys are used to uniquely identify elements in lists, helping React optimize rendering.
    • React Router: A library for adding navigation and routing to React applications, keeping the UI in sync with the URL. Different types include BrowserRouter and HashRouter.
    • Context API: A way to share state between components without explicitly passing props through every level of the component tree. Hooks like useContext are used to consume context values.
    • useReducer Hook: An alternative to useState for more complex state management within functional components, similar to Redux in concept.
    • useEffect Hook: Used for performing side effects in functional components (e.g., data fetching, subscriptions). It includes a cleanup function.
    • useLayoutEffect Hook: Similar to useEffect but runs synchronously after all DOM mutations. Should be used cautiously to avoid performance issues.
    • Redux: A pattern and library for managing and updating application state in a predictable way, especially for complex applications with global state. Key components include Store, Actions, Reducers, and Dispatcher. Unidirectional data flow is a core principle.
    • Testing: React applications can be tested using frameworks like Jest and Enzyme. Different types of testing include component testing (snapshot testing), integration testing, and end-to-end testing.
    • Version Control with Git: Git is used to track changes in code and collaborate with other developers. Common Git commands like init, add, commit, push, pull, branch, and checkout are mentioned.

    Important Ideas and Facts:

    • React is a library focused on the view layer of an application.
    • Components are the fundamental building blocks of React UIs.
    • JSX makes it easier to write and understand UI structures within JavaScript.
    • Props are immutable from the child component’s perspective.
    • State changes trigger re-renders of the component and its children.
    • Lifecycle methods allow performing actions at specific stages of a component’s existence.
    • Conditional rendering enables dynamic UIs based on application logic.
    • Refs provide a way to interact directly with the DOM or component instances when necessary.
    • Keys are crucial for efficient rendering of dynamic lists.
    • React Router enables building single-page applications with navigation.
    • Context API offers a way to avoid prop drilling for shared state.
    • useReducer is suitable for managing complex state logic.
    • useEffect is the primary hook for handling side effects.
    • useLayoutEffect should be used for DOM measurements or synchronous layout adjustments.
    • Redux provides a centralized store for managing global application state.
    • Testing is essential for ensuring the reliability of React applications.
    • Git is a widely used version control system for collaborative development.

    Quotes:

    • (Regarding state persistence): “state in react is persistent across renders meaning count will retain the value until it’s updated by set count”
    • (Regarding the purpose of event handlers): “these functions are used to update the count State based on the user actions”
    • (Defining components): “all the files that you can see inside the source are components of the real so app.js is one component counter. GS is one component index.js is one company”
    • (Defining JSX): “this right here the code that we are able to see is basically jsx syntax so basically this is a JavaScript code but we have written HTML inside the Javascript file so this is called GSX”
    • (Purpose of props): “react uses props to pass attributes from parent components to child components”
    • (Purpose of conditional rendering): “conditional rendering is nothing but if a given statement is true then the if statement executes or else the L statement will execute”
    • (Preventing rendering): “to do this return null instead of its render output”
    • (Flux as data flow management): “flux is a pattern for managing the data flow in your application”
    • (Unidirectional data flow in React): “data flows only in One Direction”
    • (Keys for unique identification): “keys are the elements which helps react to identify the components uniquely”
    • (Redux for global state): “Redux helps you manage Global state that is actually the state that is needed across many parts of your application”
    • (Jest as a testing framework): “zest is a fast testing framework it act as a test Runner assert library and moing library”
    • (Enzyme for React testing): “enzyme is a JavaScript test utility for react that make it easier to assert manipulate and derse your react component output”
    • (Git for version control): “Version Control is one that record changes for document computer program large website and other collection of information over time it allow multiple user to manage multiple revision of same unit of information”

    Part 2: Mario Game Development with React

    This section details the structure and implementation of a Mario game built using React, as described in the second source.

    Main Themes:

    • Component-Based Architecture in Practice: The game is built using a modular approach with numerous components organized into atoms and molecules directories within the components folder.
    • atoms: Basic building blocks like Birds, Bricks, Clouds, KeyMessage, Obstacle, and Sun.
    • molecules: Compositions of atoms or other molecules, representing more complex UI elements like Footer, LoadingScreen, Mario, Corrector (likely character controller), MobileControls, Title, and Score.
    • Asset Management: The game utilizes an asset directory to store audio files, fonts, and images (including GIFs for animation).
    • “in this there is a section named esset in this we have included the audio font and the images that we are going to use”
    • State Management (Likely with Redux): The Obstacle component explicitly imports and uses Redux hooks (useDispatch, useSelector), suggesting that Redux is used for managing the game state (e.g., game running status, speed, object positions).
    • “It also Imports Redux Hook from the state management so after that dis patch is used to send actions to the Redux store is playay and speed are selected from the Redux state”
    • Animation Techniques: Components like Birds, Bricks, and Clouds use CSS animations (defined with @keyframes and potentially triggered by state changes using class names like bird animate, brick animate). The Obstacle component dynamically adjusts animation duration based on game speed.
    • “if is ready is true it adds the class bird animate which likely triggers an animation”
    • “The style props adjust the animation duration based on the speed making the animation faster or slower depending upon the game’s current speed”
    • Event Handling for User Interaction: The KeyMessage component indicates that the “Enter key” starts the game and the “space key” is used for jumping, implying the use of event listeners to capture keyboard input and trigger game actions (likely managed within the Mario or a game controller component).
    • “inside this we have basically created one press container and we have given two paragraphs including Enter key and space key so here Enter key is for starting the game and space key is for jump”
    • Audio Integration: The Mario component imports and likely uses audio files for jump, death sounds, and background music, managed using the useMemo hook for optimization.
    • “audio files for jump death sound and various hooks from the react and reds so after that this used dispatch hook allows dispatching actions to the redex store several State values are selected from the redex store to manage the game State such as whether Mario is dead the game is loading or the Mario’s position and the Dimensions”
    • “for this we are using use memo hook to create audio objects for jump die and background music this ensure that these objects are only created once optimizing the performance”
    • Collision Detection: The Mario component retrieves the position and dimensions of obstacles from the Redux store to implement collision detection logic.
    • “these selectors retrieve the position and dimension of two obstacles allowing for the Collision detection”
    • Scorekeeping: The Score component manages the current score, last score, and high score, potentially using localStorage for persistence. It uses useEffect with a timer to increment the score while the game is playing.
    • “the score shows the current score from the RCT store and the last score shows the last score recorded and the play is basically a Boolean indicating if the game is currently being played die is basically a Boolean indicating if the game is over and dispatch is a function that is used to dispatch the action of the Redux store”
    • “this basically initializes the state variable high score it retrieves the high score from local storage passing it as an integer or defaults to zero if the high score is not found”
    • “this use effect runs whenever the dependencies change that means incrementing the score if the game is being played or not over it sets the time out to increment the score by one to every milliseconds and then updating the last score and the high score”
    • Loading Screen: A LoadingScreen component suggests that the game handles loading states, potentially waiting for assets to load before starting.
    • Mobile Controls: The inclusion of a MobileControls component indicates support for touch-based input on mobile devices.

    Important Ideas and Facts:

    • The game demonstrates a real-world application of React’s component-based architecture for organizing a complex UI and game logic.
    • The separation of components into atoms and molecules promotes reusability and maintainability.
    • The use of Redux for state management suggests a need to manage global game state across multiple components.
    • CSS animations and dynamic styling based on game state create visual effects and responsiveness.
    • Event listeners are crucial for making the game interactive.
    • Audio feedback enhances the user experience.
    • Collision detection is a fundamental aspect of gameplay.
    • Scorekeeping provides a way to track player progress.
    • Handling loading states ensures a smoother user experience.
    • Mobile controls extend the game’s reach to different platforms.
    • The index.js files within the components, atoms, and molecules directories serve as central export points for the components within those folders.

    Quotes:

    • (Component organization): “inside this components we have one section that is atoms in this we have included all the components that are being used in this game for example we are using Birds bricks clouds key message obstacle sun and all so after this we have this molecules in this we have included the footer the loading screen Mario the corrector and the mobile controls again we have included the title and the score”
    • (Asset inclusion): “in this there is a section named esset in this we have included the audio font and the images that we are going to use”
    • (Redux usage in Obstacle): “It also Imports Redux Hook from the state management so after that dis patch is used to send actions to the Redux store is playay and speed are selected from the Redux state”
    • (Animation in Birds): “if is ready is true it adds the class bird animate which likely triggers an animation”
    • (Key bindings in KeyMessage): “Enter key is for starting the game and space key is for jump”
    • (Audio in Mario): “audio objects for jump die and background music this ensure that these objects are only created once optimizing the performance”
    • (Score and localStorage): “it retrieves the high score from local storage passing it as an integer or defaults to zero if the high score is not found”
    • (Component export in components/index.js): “each Line Imports the component of specific file path for example bird component is imported from the birds file the imported components are presumbly react components that will be used in the application to render the different parts of the UI and after that this line exports all the imported components into single object by doing this it allows other modules to import any of these components easily from one Central File instead of importing each of them individually from their respective files”

    This detailed briefing document summarizes the key concepts and practical application of React.js as presented in the provided sources. It highlights the fundamental principles of React development and showcases how these principles are applied in the creation of an interactive game.

    React Core Concepts and Mario Game Structure

    1. What are the core concepts of React demonstrated in the counter app example?

    The counter app demonstrates three core concepts of React:

    • State: State is data that can change over time and affects the component’s behavior and rendering. In the counter app, the count variable, initialized to zero, represents the component’s state. The setCount function is used to update this state. React state is persistent across renders, meaning the count value is retained until explicitly updated.
    • Properties (Props): Although not explicitly manipulated within the counter app itself, the explanation mentions that components can receive data from parent components through props. Props are read-only and are used to pass data down the component tree.
    • Event Listeners: Event listeners are functions that respond to user interactions or other events. The counter app defines event handlers like increment, decrement, and reset. These functions use setCount to update the component’s state in response to button clicks, making the component interactive.

    2. What is JSX and why is it a core concept in React?

    JSX (JavaScript XML) is a syntax extension for JavaScript that allows developers to write HTML-like structures directly within their JavaScript code. In React, JSX is used to describe the user interface of components. It is a core concept because:

    • Declarative UI: JSX makes it easier to visualize and describe the desired UI structure, as it closely resembles HTML.
    • Component Composition: JSX is used within the render method of React components to define what they should output. This facilitates the composition of complex UIs from smaller, reusable components.
    • Embedding JavaScript: JSX allows embedding JavaScript expressions within the HTML-like syntax using curly braces {}. This enables dynamic rendering based on component state and props.
    • Compilation: JSX code is not directly understood by browsers. It is transformed into standard JavaScript code (specifically, calls to React.createElement) by a build tool like Babel.

    3. How does React handle styling of components?

    React can handle styling through CSS. The example project includes a style.css file where styles are defined for various HTML elements and React components. These styles are then applied by importing the CSS file into the corresponding JavaScript component files. The example demonstrates styling for the body, app, counter, and button elements, including hover effects. React also supports inline styles (applied directly to elements using a JavaScript object) and CSS-in-JS libraries, although these are not shown in this basic example. Media queries can also be used within the CSS files to create responsive designs.

    4. What is the role of components in React, according to the sources?

    According to the sources, components are the fundamental building blocks of React applications.

    • Modularity: React applications are structured as a collection of independent and reusable components. Each file within the src directory (like app.js and counter.js) represents a component.
    • Reusability: Components can be used multiple times throughout the application, promoting code reuse and maintainability.
    • UI Decomposition: Components allow developers to break down complex user interfaces into smaller, manageable pieces. This makes it easier to develop, test, and understand the application’s structure.
    • Data Management: Components manage their own state (data that can change) and receive data from parent components via props. They define how data is rendered and how user interactions are handled.

    5. Can you describe the structure of the Mario game project in terms of components and assets?

    The Mario game project is structured into two main sections within the src directory:

    • assets: This section contains the static resources used by the game, including:
    • audio: Sound files for game events.
    • font: Custom fonts for text elements.
    • images: Sprite sheets and individual images for characters, backgrounds, and other game elements.
    • components: This section is further divided into:
    • atoms: These are the smallest, indivisible UI elements used in the game. Examples include:
    • Birds: Renders and animates birds in the background.
    • Bricks: Renders and potentially animates brick elements.
    • Clouds: Renders and animates clouds in the sky.
    • KeyMessage: Displays instructions for game controls (Enter to start, Space to jump).
    • Obstacle: Renders and manages the movement and collision detection of game obstacles.
    • Sun: Renders the sun in the game’s background.
    • molecules: These are compositions of one or more atoms, forming more complex UI elements or game entities. Examples include:
    • Footer: Displays copyright information.
    • LoadingScreen: Shows a loading animation.
    • Mario: Represents and handles the logic and rendering of the Mario character, including movement, jumping, and collision detection.
    • TheCorrector: Likely related to game logic or interactions.
    • MobileControls: Provides on-screen buttons for mobile users to control Mario.
    • Title: Displays the game’s title and logo.
    • Score: Manages and displays the player’s score and high score.

    The project also has index.js files within both atoms and molecules directories, which serve to import and then export all the components within those respective folders, providing a convenient way to import them elsewhere in the application.

    6. How does the Mario game handle animation and movement of game elements like birds and obstacles?

    The Mario game handles animation and movement using a combination of CSS animations and JavaScript logic within the React components:

    • CSS Animations: Components like Birds, Bricks, and Clouds utilize CSS animations defined in their respective .css files. The JavaScript components (Birds.js, Bricks.js, Clouds.js) use React’s useState and useEffect hooks to conditionally apply CSS classes (e.g., bird animate, brick animate, cloud animate) to the elements. These classes trigger the animations defined using @keyframes in the CSS. The useEffect hook often listens for the document’s load event to ensure animations start after the page is fully loaded.
    • JavaScript-based Movement and Updates: The Obstacle component uses JavaScript and React’s useEffect hook, along with Redux for state management, to handle the movement and positioning of obstacles. An interval (set to every 100 milliseconds) is used to periodically:
    • Access the current dimensions and positions of the obstacle elements in the DOM using useRef and getBoundingClientRect().
    • Dispatch actions to the Redux store to update the obstacles’ state (height, left, top, width).
    • The animation speed of the obstacles is controlled by the speed value from the Redux store. The Obstacle.css file likely defines CSS animations (obstacle1-move, obstacle2-move), and the animation-duration style is dynamically adjusted based on the speed prop.
    • Mario’s Movement and Collision: The Mario component also uses state, event listeners (for keyboard input), and likely Redux to manage its movement (jumping) and collision detection with obstacles. Key presses trigger state updates, which in turn affect Mario’s position and animations (potentially through CSS classes or inline styles). Collision detection is performed by comparing the positions and dimensions of Mario and the obstacles (retrieved from the Redux store).

    7. What role does Redux play in the Mario game project, based on the excerpt?

    Based on the excerpt, Redux plays a significant role in managing the global state of the Mario game:

    • Centralized State Management: Redux provides a centralized store to hold the application’s state, making it accessible to different components without the need for prop drilling through multiple levels.
    • Game State: The Obstacle and Mario components both interact with the Redux store. The Obstacle component selects isPlay (indicating if the game is running) and speed from the store and dispatches actions to update the obstacles’ dimensions and positions. The Mario component also uses Redux hooks like useDispatch and useSelector to manage its state, such as whether Mario is dead (isDead), the game’s loading status (isLoading), and Mario’s position and dimensions.
    • Collision Detection: The Mario component uses selectors to retrieve the position and dimensions of the obstacles from the Redux store, enabling collision detection logic.
    • Score Management: The Score component also interacts with the Redux store. It selects the current score, lastScore, play status, and die status. It also dispatches actions to update the Redux store with the score and potentially the high score.

    In summary, Redux in this project facilitates communication and data sharing between various game components (like Obstacle, Mario, and Score) by providing a single source of truth for the game’s state.

    8. What are some advantages of using React, as highlighted in the introductory and concluding sections of “01.pdf”?

    The introductory and concluding sections of “01.pdf” highlight several advantages of using React:

    • Easy to Learn: React is presented as being easier to learn compared to other JavaScript frameworks like Angular. Its core concepts are relatively straightforward, focusing on components, JSX, props, state, and event listeners.
    • Efficient, Declarative, and Flexible: React is described as efficient, allowing for optimized updates to the DOM. Its declarative nature means developers describe the desired UI state, and React handles the rendering. It also offers flexibility in how developers structure their applications.
    • Component-Based Architecture: React’s component-based approach promotes modularity and reusability of code, making it easier to build and maintain complex UIs.
    • Simpler File Structure and Component Model: React generally has a simpler file tree and a flexible component model, reducing the cognitive load on developers.
    • Shorter Dependency List: Compared to some other frameworks, React tends to have fewer dependencies, simplifying project setup and management.
    • Large and Active Community: While not explicitly stated in these excerpts, the popularity of React implies a large and active community, providing ample resources, support, and third-party libraries.
    • Suitable for Businesses: Due to its simplicity and efficiency, businesses are increasingly inclined to use React for their web application development.
    • Performance: React’s efficient rendering mechanisms (like the virtual DOM, though not detailed here) contribute to better application performance.

    React JS: A Comprehensive Overview

    React JS is a popular open-source JavaScript library developed by Facebook for building dynamic and interactive user interfaces. It is widely used for creating single-page applications where seamless performance and efficient UI updates are crucial. Known for its component-based architecture, React JS allows developers to build reusable UI elements, making development faster and more organized. It is considered an essential tool in today’s web ecosystem due to its flexibility and efficiency, powering many dynamic and interactive web applications.

    Key aspects and features of React JS discussed in the sources include:

    • Component-Based Architecture: UI is broken down into reusable, self-contained components, each with its own structure and behavior, allowing for independent functionality. Applications built with React are essentially trees of components.
    • Virtual DOM: React uses a lightweight copy of the actual DOM. Instead of directly updating the real DOM, React updates the virtual DOM first, calculates the changes, and then updates only the necessary parts of the real DOM. This significantly improves performance by reducing the overhead of direct DOM manipulation. The virtual DOM works in three steps: rendering the entire UI in the virtual DOM, calculating the difference compared to the previous state, and then updating only the changed elements in the real DOM.
    • JSX (JavaScript XML): It is an XML or HTML-like syntax used by React that extends ECMAScript, allowing HTML-like text to coexist with JavaScript code. JSX is transformed into standard JavaScript objects by pre-processors like Babel. It makes HTML codes easier to understand and can boost JavaScript’s performance. Browsers cannot read JSX directly and require transformation into JavaScript.
    • One-way Data Binding (Unidirectional Data Flow): Unlike some frameworks with two-way data binding, React follows a single direction of data flow from parent to child components. This makes the code more stable, easier to debug, and predictable, ultimately improving application performance. Flux is an architectural pattern used by Facebook with React that enforces this unidirectional data flow, involving a dispatcher, store, actions, and views. Redux is a popular library for state management in React applications that also follows these principles with a single store, actions, and reducers.
    • Server-Side Rendering (SSR): React allows for pre-rendering the initial state of components on the server. The server sends a fully rendered HTML page to the browser, leading to faster initial page load times and improved SEO.
    • Component Lifecycle: React components have lifecycle methods that allow developers to control component behavior during different phases, such as mounting (initial rendering), updating (due to state or prop changes), and unmounting (removal from the DOM). Examples include componentDidMount and componentWillUnmount.
    • React Hooks: Introduced in React 16.8, hooks are functions that allow developers to use state and other React features in functional components. They make it easier to share stateful logic between components and work with functional components without needing classes. Commonly used hooks include useState, useEffect, and useContext. Custom hooks can also be created for reusable logic.
    • Props (Properties): These are read-only components that are passed down from parent to child components to supply data. Props must be kept pure (immutable), maintaining the unidirectional data flow.
    • State: State is the heart of React components, representing the source of data that determines how a component renders and behaves. Unlike props, state is mutable and can create dynamic and interactive components. State is managed within the component itself using this.state and updated using this.setState(). Direct modification of state is discouraged.
    • Keys: Keys provide a unique identity to components, especially when rendering lists of elements. They help React efficiently update and reorder elements in the DOM.
    • Reusability: React promotes the creation of reusable UI components, which speeds up development and makes applications easier to maintain. The “write once, use it anywhere” principle applies to React components.

    Reasons to Learn React JS highlighted in the sources:

    • Component-based architecture for building dynamic and efficient applications.
    • Virtual DOM for faster UI updates and improved performance.
    • Increased job opportunities: There is a high demand for React JS developers globally, with a significant increase in job openings.
    • Attractive pay scale: React developers generally command competitive salaries.
    • Easy migration: React facilitates migration from other technologies and older versions of React with features like deprecation warnings and codemod scripts.
    • Reusability of code: Components can be reused across the application, reducing development time and effort.
    • One-way data binding: Makes code more stable and easier to debug.
    • Flexibility: React can be integrated with other libraries and frameworks and is suitable for large and complex web development projects.
    • Strong Community Support: Being an open-source library, React has a large and active community, providing extensive documentation, resources, and support through platforms like GitHub and Stack Overflow.
    • Testability: React views can be treated as functions of the state, making applications easier to test and debug.

    Prerequisites for learning React JS:

    • HTML: Standard markup language for creating web pages.
    • CSS: Technology for styling web pages.
    • JavaScript: Lightweight, interpreted programming language for adding interactivity to web pages. Familiarity with ES6 (ECMAScript 2015) standards, including its syntax and features, is also important.
    • npm (Node Package Manager): Default package manager for Node.js, used for managing JavaScript packages and modules.
    • Code Editors/IDEs: Platforms like Sublime Text, Atom, and Visual Studio Code for writing React code.
    • Basic understanding of the DOM (Document Object Model).

    React Architecture:

    React is often described as the “V” (View) in the MVC (Model-View-Controller) architecture, although it’s more aligned with a component-based approach. For the “M” (Model) architecture, patterns like Flux and Redux are commonly used to enforce unidirectional data flow and manage application state. A React application is composed of a set of nested components, with data flowing through props and state.

    Learning Curve:

    React is considered to have a shallow learning curve compared to some other frameworks like Angular, making it suitable for beginners. The ES6 syntax is generally easier to manage, especially for smaller applications.

    Community Support:

    React has a strong and active community. It is one of the top-rated repositories on GitHub with a large number of stars and a vast ecosystem of libraries and tools. The official documentation is easily accessible, and platforms like Stack Overflow have a massive number of React JS related questions with accepted answers, indicating a highly responsive community.

    Market Trends and Job Opportunities:

    There is a significant demand for React JS developers in the job market. Numerous job opportunities are available across various platforms, and the demand has seen substantial growth in recent years. React developers’ salaries are generally attractive and depend on factors like experience, skills, and location. Top companies like Reddit, BBC, Netflix, Facebook, PayPal, Instagram, Uber Eats, Airbnb, and Twitter use React.

    Testing in React:

    Testing is a crucial aspect of React application development. React’s architecture and one-way data flow make applications highly testable. Unit testing, functional testing, and integration testing are important types of testing. Tools like Jest and Enzyme are popular for React testing.

    Real-Time Projects:

    The sources mention several real-time project ideas that can be built using React, including:

    • E-commerce App
    • Chat App
    • Social Media App
    • Video Sharing App
    • URL Shortener
    • Music Streaming App

    These projects demonstrate the versatility of React in building various types of interactive web applications.

    Becoming a React JS Developer:

    The path to becoming a React JS developer involves learning the fundamental concepts, gaining hands-on experience through projects, and staying updated with the latest advancements. Engaging with the developer community and practicing for interviews are also important steps. Employers often look for skills in JavaScript, HTML, CSS, React core concepts (JSX, components, state, props, hooks), state management libraries (like Redux), build tools (like Babel, Webpack, npm), RESTful APIs, and version control systems (like Git).

    In conclusion, React JS is a powerful and widely adopted JavaScript library for building modern web applications. Its component-based architecture, efficient rendering through the Virtual DOM, unidirectional data flow, and strong community support make it a valuable skill for front-end developers. The demand for React developers continues to grow, offering numerous career opportunities with competitive salaries.

    React JS: Component-Based Architecture Explained

    Let’s delve into the component-based architecture of React JS. As highlighted in the sources, this is a fundamental principle that makes React a popular and efficient library for building user interfaces.

    What is Component-Based Architecture?

    In React, the user interface (UI) is broken down into reusable, self-contained components. Think of it like building with Lego blocks, where each block (component) has its own structure and function, and they can be combined to create a larger structure (the application). Each component manages its own structure and behavior independently.

    Key Characteristics of Components:

    • Reusability: One of the primary benefits is that these components can be reused throughout the application and even in other projects. This “write once, use it anywhere” principle saves development time and effort.
    • Self-Containment: Each component is self-contained, meaning it encapsulates its own logic (how it behaves) and its own view (how it looks). This makes it easier to manage and understand individual parts of the application without affecting others.
    • Independent Functionality: Components can function independently. This allows developers to focus on building and styling one section of the application at a time without breaking other parts.
    • Building Blocks: React applications are essentially trees of components, where smaller components are composed together to form larger ones. There is often a root component at the top, with child and sub-child components forming the rest of the UI hierarchy.
    • Logic and View Separation: Component-based architecture enables the separation of logic and view. This makes the codebase more organized and easier to maintain.

    How Components Work:

    • Rendering: Each component has a render method that returns a React element, which describes what should appear on the screen. This often involves JSX, an HTML-like syntax that gets transformed into JavaScript.
    • Data Flow: Components interact with each other through props (properties) and state.
    • Props are like arguments passed to a function; they are read-only and flow downwards from parent to child components. They allow parent components to configure and control their child components.
    • State is data that is managed within a component and can change over time, triggering re-renders of the component and its children. Only class components can have their own state.
    • Composition: Complex UIs are built by composing smaller, simpler components together. Parent components can embed and manage child components.

    Advantages of Component-Based Architecture:

    • Faster Development: Reusability and independent functionality allow developers to build applications more quickly. Developers can focus on individual components without worrying about the entire codebase.
    • Improved Organization: Breaking the UI into smaller, manageable pieces leads to a more organized codebase that is easier to understand, navigate, and maintain.
    • Increased Reusability: As mentioned earlier, components can be reused across different parts of the application, reducing code duplication and development effort.
    • Enhanced Performance: While the virtual DOM is the primary driver of performance, component-based architecture facilitates targeted updates. When a component’s state or props change, only that component and its relevant children need to be re-rendered.
    • Easier Testing: Individual components can be tested in isolation, making it easier to write unit tests and ensuring the reliability of different parts of the application.
    • Better Collaboration: Teams of developers can work on different components simultaneously without interfering with each other’s code.

    In summary, the component-based architecture in React JS is a powerful paradigm that promotes reusability, maintainability, and efficiency in building dynamic user interfaces. By breaking down complex UIs into smaller, self-contained components, developers can create applications that are easier to develop, understand, test, and scale.

    React’s Virtual DOM: Concepts and Advantages

    Let’s discuss the Virtual DOM in React JS in detail, drawing on the information from the sources.

    The Virtual DOM is a central concept in React that plays a crucial role in its efficiency and performance.

    What is the Virtual DOM?

    • The Virtual DOM is essentially a lightweight copy of the actual DOM (Document Object Model).
    • You can think of it as a tree data structure of plain JavaScript objects.
    • Like the actual DOM, a Virtual DOM is a node tree that lists the elements and their attributes and content as objects and their properties.
    • React’s render function creates a node tree out of the React components.

    The Problem it Solves:

    • Direct DOM manipulation is slower compared to most JavaScript operations. Browsers have to perform several costly steps when the real DOM is updated, including parsing HTML, recalculating CSS, updating layout, and re-rendering the tree.
    • Many JavaScript frameworks update the DOM more than necessary, leading to inefficient updates and performance issues. For instance, updating one item in a list might cause the entire list to be rebuilt.

    How the Virtual DOM Works:

    React utilizes a process called reconciliation to efficiently update the actual DOM. This process generally involves three main steps:

    1. Update in Virtual DOM: Whenever the underlying data in a React component changes (due to state or props updates), the entire UI is re-rendered in the Virtual DOM representation.
    2. Diffing Process: React then compares the new Virtual DOM with the previous snapshot of the Virtual DOM. It figures out the differences between the two versions, identifying which Virtual DOM objects have changed. This process of finding the differences is often referred to as “diffing”.
    3. Patching the Real DOM: Once React has identified the changes, it updates only the necessary parts of the real DOM to reflect those changes. This means instead of re-rendering the entire UI in the browser, React applies a “patch” containing only the modifications.

    Analogy:

    The process of using the Virtual DOM can be likened to editing a blueprint of a house (Virtual DOM) before making changes to the actual house (Real DOM). It’s faster to modify the blueprint than to physically move rooms. Once the blueprint is finalized, you then make only the necessary adjustments to the real structure.

    Advantages of Using the Virtual DOM:

    • Faster Rendering: By minimizing direct manipulation of the real DOM, React achieves faster rendering and improves application performance.
    • Enhanced Performance: The Virtual DOM leads to better performance of React applications, especially for complex and dynamic UIs with frequent updates.
    • Reduced Load Times: Faster rendering has a massive impact on reducing load times and quickly adapting performance based on user traffic.
    • Improved User Experience: By ensuring faster and more efficient updates, the Virtual DOM contributes to a smoother and more responsive user experience.
    • SEO Friendly: While not directly a benefit of the Virtual DOM, React’s ability to perform server-side rendering (SSR), often facilitated by the Virtual DOM concept, can improve SEO. SSR allows the initial rendering of React components on the server, sending a fully rendered HTML page to the browser, which search engines can easily crawl.
    • Cross-Browser Compatibility: The Virtual DOM is not browser-specific and helps in abstracting away browser-specific DOM implementations, leading to more consistent behavior across different browsers.
    • Lightweight: The Virtual DOM itself is lightweight as it’s just a set of JavaScript objects.

    Virtual DOM vs. Real DOM (Source):

    FeatureReal DOMVirtual DOMUpdate SpeedSlowerFasterDirect UpdatesDirectly updates HTMLCannot directly update HTML; updates the Virtual DOM firstElement UpdatesCreates a new DOM if an element updatesUpdates the JSX if an element updatesManipulationMore expensiveEasierMemory UsageCan lead to memory wastageResults in no memory wastageIn conclusion, the Virtual DOM is a key innovation in React that significantly optimizes UI updates by acting as an intermediary between the developer’s desired UI state and the browser’s rendering engine. This abstraction allows React to efficiently manage and apply changes to the real DOM, resulting in faster, more performant, and user-friendly web applications.

    React State Management: Concepts and Techniques

    Let’s discuss State Management in React JS, drawing on the information from the sources and our previous conversations about component-based architecture and the Virtual DOM.

    What is State in React?

    In React, state is a way for a component to hold and manage data that can change over time. It is essentially an object that determines a component’s rendering and behavior. Unlike props, which are passed down from parent components and are immutable within the receiving component, state is local to a component and is mutable.

    • Components can have an initial state defined within their constructor using this.state.
    • State can be updated over time in response to user interactions, network requests, or other events.
    • When a component’s state changes, it triggers a re-rendering of the component and its child components, allowing the UI to reflect the updated data.

    Stateful vs. Stateless Components:

    • React components can be categorized as either stateful or stateless.
    • Stateful components (class components) have the ability to maintain their own state and manage changes to it over time. They inherit from React.Component. As per ES6 standards, class components are the primary way to manage state.
    • Stateless components (functional components), on the other hand, do not have their own state. They primarily receive data as props from their parent components and render UI based on those props. They are essentially pure JavaScript functions. However, with the introduction of React Hooks, functional components can now also manage state.

    Updating State with setState():

    • To update the state of a class component, you should always use the this.setState() method.
    • setState() merges the new state with the old state. This means that if your state object has multiple properties, you only need to provide the properties that you want to update.
    • It’s crucial not to modify the state directly (e.g., this.state.property = newValue) because React may not recognize the change and won’t re-render the component. Direct modification also prevents React from correctly managing state transitions.
    • State updates through setState() may be asynchronous, meaning there’s no guarantee that the state will change immediately. React might batch multiple setState() calls into a single update for performance reasons. Therefore, when calculating the next state, you should not rely on the current values of this.props or this.state immediately after calling setState().

    State and Component-Based Architecture:

    • In a component-based architecture, state is often managed in parent components and then passed down to child components as props. This facilitates the flow of data through the application hierarchy.
    • Child components can then trigger state updates in their parent components through callback functions that are also passed down as props.

    Unidirectional Data Flow and Flux:

    • React follows a unidirectional flow of data or one-way data binding. This means that data flows in a single direction throughout the application, which provides better control over the data.
    • Flux is an architectural pattern introduced by Facebook for managing data flow in React applications. It emphasizes unidirectional data flow through four main components:
    • Actions: Objects that represent events or changes that should occur in the application. They have a type field.
    • Dispatcher: A central hub that receives actions and dispatches them to registered stores. There should be only one dispatcher per application.
    • Stores: Containers for application state and logic. They register with the dispatcher and update their state based on received actions. When a store’s data changes, it emits a change event. Flux can have multiple stores.
    • Views (React Components): Display data retrieved from stores and can initiate actions based on user interactions. Views subscribe to change events from the stores they depend on.

    Redux:

    • Redux is a popular open-source JavaScript library for managing application state, often used with React. It implements the principles of Flux but with some key differences.
    • Key Principles of Redux:Single Source of Truth (Store): The entire application state is stored in a single store.
    • State is Read-Only: The only way to change the state is by dispatching actions.
    • Changes are Made with Pure Functions (Reducers): Reducers are pure functions that take the previous state and an action, and return a new state. They determine how the state should change based on the action type.
    • Redux provides a more structured approach to state management, especially for complex applications.

    React Hooks for State Management:

    • Introduced in React 16.8, Hooks allow you to use state and other React features in functional components.
    • useState is a fundamental Hook that enables functional components to have their own state variables. It returns an array with the current state value and a function to update it.
    • useReducer is another Hook used for more complex state management, similar to how Redux manages state. It takes a reducer function and an initial state, and returns the current state and a dispatch function to trigger state updates.

    Context API:

    • The Context API is a React feature that provides a way to share values like themes, user authentication status, etc., between components without explicitly passing props through every level of the component tree (prop drilling).
    • You can create a Context object using React.createContext() and then provide values to consuming components using a Context.Provider. Components can then access these values using the useContext Hook or a Context.Consumer.

    State Management and the Virtual DOM:

    • When the state of a component changes and a re-render occurs, React creates a new Virtual DOM tree.
    • The diffing process then compares this new Virtual DOM with the previous one to identify the minimal changes needed to update the actual DOM.
    • Efficient state management ensures that only the necessary components re-render when their relevant state changes, which optimizes the performance benefits of the Virtual DOM. Techniques like state collocation (keeping state close to where it’s needed) can further enhance performance by reducing unnecessary re-renders.

    In summary, state management in React is a critical aspect of building dynamic and interactive user interfaces. React provides built-in mechanisms like the state property and the setState() method in class components, and Hooks like useState and useReducer in functional components. For more complex applications, state management libraries like Redux, or the Context API for global data sharing, offer more structured solutions while still leveraging React’s component-based architecture and the efficiency of the Virtual DOM.

    React Router Navigation in Single-Page Applications

    Let’s delve into React Router navigation, drawing upon the information from the sources, particularly sections of “01.pdf”.

    What is React Router?

    React Router is a powerful standard library system built on top of React. It is used to create routing in React applications. Its primary purpose is to enable navigation among different views or components in a single-page web application (SPA). Without React Router, displaying multiple views and updating the browser URL accordingly in an SPA would be challenging. React Router keeps the browser URL in sync with the data being displayed on the web page.

    Key Components of React Router:

    React Router provides several essential components that facilitate navigation:

    • BrowserRouter (or aliased as Router): This is a router implementation that utilizes the HTML5 history API (pushState, replaceState, and popState events) to keep the UI synchronized with the URL. It’s the parent component that typically wraps your application and makes the routing functionality available to its descendants. In the provided example, BrowserRouter is imported and aliased as router: import { BrowserRouter as router, Route, Link, Switch } from ‘react-router-dom’;.
    • Route: This component is conditionally shown. It renders a specific user interface (component) when its path prop matches the current URL. The exact prop can be used to ensure that the route only matches when the path exactly matches the URL. For instance, <Route exact path=”/” component={Home} /> will only render the Home component when the URL is exactly /.
    • Link: This component is used to create links to different routes within your application. It functions similarly to the HTML <a> tag but prevents a full page reload, providing a smoother navigation experience in an SPA. The to prop of the Link component specifies the path to navigate to. For example, <Link to=”/about”>About Us</Link> creates a link that, when clicked, will update the URL to /about and potentially render the component associated with that route.
    • Switch: This component is used to render only the first Route that matches the current URL, rather than rendering all matching routes. This is useful when you have multiple routes that might partially match the same URL, and you want only the most specific one to be rendered. All Route components are typically wrapped inside a Switch component.

    How Navigation Works with React Router:

    1. You wrap your application’s main component with a router component like BrowserRouter.
    2. You define different routes using the <Route> component, associating a specific path with a React component that should be rendered when that path is matched.
    3. You use the <Link> component to create navigational links within your application. When a <Link> is clicked, React Router intercepts the click event and updates the browser URL without causing a full page reload.
    4. The router then compares the updated URL with the defined routes.
    5. If a match is found, the component associated with that Route is rendered within the application. The <Switch> component ensures that only the first matching route is rendered.

    Types of React Routers:

    React Router provides different types of routers to suit various needs:

    • BrowserRouter: Recommended for most web applications. It uses the HTML5 history API for clean URLs (e.g., /about).
    • HashRouter: Uses the hash portion of the URL (e.g., /#/about). It’s often used for supporting legacy browsers or when you don’t have control over the server configuration to handle regular URL routing.
    • MemoryRouter: Keeps the URL changes in memory, not in the browser’s address bar. It’s useful for testing and non-browser environments like React Native.

    Advantages of Using React Router:

    • Provides a synchronous URL in the browser with the data displayed on the web page.
    • Maintains a standard structure and behavior for navigation within the application.
    • Essential for developing single-page web applications where content updates dynamically without full page reloads.
    • Enables navigation among views of various components in a React application.
    • Allows changing the browser URL and keeps the UI in sync with the URL.
    • Uses the <Link> component for internal navigation, similar to the HTML <a> tag but without page reloads.
    • The Switch component helps in rendering only one matching route.
    • It’s not necessary to manually set the browser history.

    In the example provided, a basic navigation structure is implemented using BrowserRouter (aliased as router), <Link> components for “Home”, “About Us”, and “Contact Us”, and <Route> components within a <Switch> to render the corresponding components (Home, About, Contact) when their respective paths are matched. This demonstrates the fundamental principles of React Router navigation in action.

    ReactJS Full Course10 Hours [2025] | Learn React js | React.js Training for beginners | Edureka Live

    The Original Text

    hello everyone and welcome to this comprehensive full course on react GS react GS is a popular JavaScript library developed by Facebook for building Dynamic and interactive user interfaces it is widely used for creating single page applications where seamless performance and efficient UI updates are crucial so known for its component based architecture reactjs allows Developers to build reusable UI elements making development faster and more organized so whether you are a beginner stepping into web development or an experienced developer looking to expand your skills reactjs is an essential tool in today’s web ecosystem known for its flexibility and efficiency reactjs Powers some of the most dynamic and interactive web applications today so in this course we will guide you through the fundamentals of react GS its key features and the skills required to become a proficient react GS developer with that said let’s outline the agenda for this react GS full course so first we will start by exploring introduction to react GS where we will understand what react GS is what its purpose and why it’s widely used in modern web development next we will dive into reasons to learn reactjs where we will discover why reactjs is valuable skill and how it can boost your career followed by the features and prerequisites and then we will will explore aspects and advantages of react GS where we will understand the unique benefits that react GS brings to web development moving on we will cover reactjs fundamentals to learn about components jsx and The Core Concepts that form the foundation of reactjs next we will discuss conditional rendering in react GS in this section we will understand how to render content conditional based on different states after that we will dive into react components and react life cycle where we will explore component structures and life cycle methods for better app control then we will move on to react router where we will learn how to manage navigation and routing in react applications next we will explore react hooks understand the power of hooks for managing State and side effects we will continue with reactjs Redux to master State Management in react application using RS next we will compare react versus react n to explore the key differences between react Gus for web and react native for mobile development then react versus angular where we will understand how react GS Compares with angular in terms of performance and structure then we will move on to react GS projects where we will get hands-on experience with practical reactjs projects next we will explore testing in react in this section we will learn how to write and run effective test for your react applications and finally we will conclude with how to become a reactjs developer to discover the road map skills and resources you need to Kickstart your career as a reactjs developer followed by the react GS interview questions where we will prepare for frequently Asked interview questions to boost your confidence and secure job opportunities but before we begin please like share and subscribe to our YouTube channel and hit the Bell icon to stay updated on the latest content from edu Rea also edu rea’s reactjs training course equips you with the skills needed for professional web development roles focusing on improving uiux using this powerful JavaScript library this course covers key react fundamentals including jsx props State events reducers actions and the state tree master these Concepts to build modern web applications confidently so check out the course and enroll today also check out edureka’s full stack development course with certification this course is designed to take you from the basics to Advanced web development covering everything from HTML CSS and JavaScript to powerful Frameworks like react nodejs and express along with API integration and MySQL for database management so check out the course Link in the description box below now let’s get started with our first topic that is Introduction to reactjs Let’s dive into the three major reasons to make react so useful so the first one is component based architecture in react component based AR architecture UI is broken down into reusable self-contained components each component has its own structure and behavior in this layout the page is divided into different parts a navigation bar at top a side bar at right and the main display area in react we build each of these sections as individual components meaning each one can function independently so the next one is virtual Dom the virtual Dom is essentially a lightweight copy of actual Dom instead of directly making changes to the real dor every time something updates react Updates this virtual dor First Once react has figured out what has changed it then updates only the necessary parts of the real Dom and after that we have the development speed react component structure allows us to quickly build into small parts of the app individually since each component is separate we can focus on building and styling one section at a time without breaking other parts of the page this saves the time and help us to build application faster so in short react component structure development speed and virtual Dom help us to create Dynamic efficient and userfriendly applications so now let us move on to what is react first of all react is a open- source JavaScript library react is maintained by developers worldwide and is focused on building user interfaces making it highly adaptable and Community Driven the next one is react makes develop vment fast scalable and simple react component based architecture allows developers to break uis into reusable Parts speeding up the development and making the large application easier to manage next is react is used for building user interfaces mainly single page applications react is perfect for single page applications where content updates dynamically without reloading the entire page offering a smooth user experience and the last one is rea react enables data changes without reloading the page with features like virtual Dom react efficiently updates the data in real time allowing the web applications to respond quickly without full page reloads now let us have a look on trending Frameworks so here is the data from stack Overflow and here we can see that reactjs is most trending framework currently so react is the popular choice for developers nowadays now that we have a clear understanding of of what react actually is let us explore why it is a such popular choice among the developers so the first one is virtual dor reacts virtual nor updates changes efficiently without refreshing the whole page making apps fast and responsive the second one is development speed with the reusable components and large community of pre-build libraries react helps developers to build applications quickly next one is stability RAC uses oneway data flow which means change in child component won’t affect the parent component this keeps the app stable and easy to manage the next one is interactive interface react makes it easy to build highly interactive uis which means user can get smoother and more engaging experience the next one is component based architecture react divides the uis into components allowing us to build update and use part independently saving a lot of time and effort the next one is server site rendering rea supports serers side rendering which can improve page load speed and SEO by rendering the content on the server before sending it to the user the next one is simple to use reapp Simple syntax and clear structure make it beginner friendly letting new developers start creating apps quickly the next one is flexible development react flexibility allows it to be used in a variety of projects from small apps to large scale Enterprise applications so now that we have covered the key components of rea let’s move on to setting up your development environment where we are going to download vs code and then we will install nodejs for running react on our systems now to download visual studio code we need to visit the official website of Visual Studio code we are just going to click on this website and then we are going to just click on the download if you’re using Windows you just need to click here in case you’re using Mac you need to click here so I’m using Windows I need to click here so now after the download process you’ll see something like this you just need to click on I accept the agreement next just check these boxes create desktop icon open with code and open with code click on next and finally click on install so that will install Visual Studio code into your system so now after installing vs code into our system we are going to install nodejs and to download nodejs just visit this website nodejs.org and you just need to click on this download the LTS version so now after clicking on the download node GS LTS version you’ll be able to download the exe file so after completing the download process you will see this interface you just need to click on next and I already have node installed in my PC so I’m getting these options otherwise you’ll just get a next option let us say I want to change it and then again you will click on next next and and then you will just get a finish option here so that will start the installation of nodejs so after successfully installing the nodejs what we are going to do is we are going to open our Command Prompt to cross check whether nodejs has been successfully installed into our system or not so for that we need to write one command so the first command is node hyphen V so this right here is telling the version of our nodejs so the next command is npm hyphen V so this is also telling the version npm version that we have installed so by this we know that not GS and npm has been successfully installed into our terminal so what is the next step so next step is to open our vs code and then in vs code we are going to check whether node and npm are working or not so here I am on my visual studio code so I’m going to open my terminal here and here is my terminal so inside terminal I’m going to repeat the commands so the first one was node V that’s it it is showing the version of node and it is successfully working in my visual studio code and then it is npm V so now npm is also working in my visual studio code so now we have successfully installed the vs code and nodejs into our system and now we are ready to create one project so now that react is installed let’s move on to creating our first react app so to create our first react app we are going to open Visual Studio code inside this we are going to open one folder so here I’m going to create one new folder and I’m going to name it as react Dev we’ll just select this folder and now we have access to this folder inside this folder we are going to open the terminal and inside the terminal we are going to create the app so to create the app we are going to use this command that is npx create react app and after this you can provide any name which you want to provide to your app let’s say I’ll provide it as react and then enter and the installation of the dependences will start just write y here and enter so now this will create the react app and add the dependences into my react tab so we need to choose the different project name I’ll just choose npx create react app and let’s say counter that’s it now it should create my project and now this is installing the packages into my folder right here we can see the counter app has been created and the package.json has been added inside it now let us wait till the react app is getting created now here we can see that our first react app has been successfully created the node modules has been added the source components has been added and we can see the package Json and everything is added in our folder so this is how you create your react app and now what we are going to do is we are going to run our react app so for that we can just use CD and the app name that is counter and enter and after this we’ll just start our reaction tab that’s it we are going to launch our react tab so here we can see this is our first react app so by default when you are going to install the react app you are going to see these things so now we are going to make some changes in our react app and then we are going to write the code for hello world so there are some useless files that you need to delete first so inside the SRC you are just going to keep the index.js and app.js rest you can delete and that’s it I’m going to remove the logo also now we are going to make some changes in our app.js so first of all we are going to remove these and then we are going to remove the code inside the return statement and we are going to write one heading here that will be hello world that’s it we are going to save it and we’ll move on to index.js inside index.js first of all we’ll remove all this and then we are going to [Music] remove this and this so now we have going to just save our file and just look at the output so this is the output the code we have written inside the return statement is hello world so this is our first react app we have successfully written our first code in react that is hello world so now what we are going to do is we are going to learn some coree concepts of react and then we will be creating one counter app so now that our first react app is up and running let’s dive into the Core Concepts of react that make building application so powerful and efficient so the core components of react includes components components are the building blocks of react tab each part of your UI is component which can be reused to make development faster and cleaner they help us to break down the complex uis into manageable pieces next on we have jsx jsx is a syntax that looks like HTML but works inside the JavaScript it makes it easier to write the structure of your react component j6 allows you to combine HTML like code with JavaScript functionality in one place next on we have is virtual Dom the virtual Dom is lightweight copy of the actual Dom react uses it to update the UI efficiently by only changing what’s necessary making the app faster this reduces unnecessary operations and improves the performance next on we have a state management state refers to the data that changes in your app react lets you to manage State inside the components so when the state changes your UI automatically Updates this is essential for handling Dynamic data like form inputs or user interactions next on we have props props is basically short for properties these are used to pass data from one component to another helping you make your component Dynamic and reusable they allow you to customize component based on the data that they receive next on we have is event handlers event handlers in react are functions that handles user interactions like click form submissions and more allowing your app to respond to user actions they provide a way to trigger changes in your app based on the user input so now that we have covered the code concepts of react let’s switch to vs code and apply these Concepts in real project we will see how everything works together with Hands-On coding so the first thing again I’m going to do is I’m going to open one folder inside my visual studio code so I’ll just create one more folder naming naming counter I’ll just select this folder and again we are going to create this app so inside our terminal again we are going to write npx create react app counter that’s it so our app has been created now what we are going to do is we are going to move into the app by CD counter that’s it now again we are going to delete the unnecessary things that includes index. CSS logo and these two files we are also going to delete this app. CSS so now we are going to create one more file inside it which will be counter dogs that’s it we are going to work on these three files and again one more file we should create for our styling so it should be style. CSS and that’s it so first of all we will start with counter do GS so by creating this counter. GS we are going to understand the concepts of State props and event handling so what we are going to create is we are going to create an app in which we will increment or decrement the numbers and by creating that we will be understanding the concepts of State Management and properties and event handling so first of all we are going to import the react to use the GSX syntax and Define the react component so it will be import react from react now here we are defining the properties that we are going to use which includes count increment and decrement and along with that one reset so these are the properties that we are passing so basically counter is a functional component that takes the four props which includes count increment decrement and reset these props are passed down from the app component enabling counter to display and manipulate the count value based on the user interaction now the counter component returns GSX that renders diff element with class counter inside this div section the current count value is displayed inside H1 element as a counter count and then we have created these three buttons including increment decrement and reset the increment button triggers the increment function from the properties to increase the count when clicked and after that we have this decrement button so this triggers the decrement function from the properties to decrease the count when clicked and then on we have this reset button this reset button triggers the reset function from the properties to reset the count to zero when clicked now here we can see that each of the button uses onclick attribute to call the function when clicked since increment decrement and reset functions are passed as props from the app component clicking these buttons triggers the respective functions in the app that we are going to write so for example the increment button is clicked the increment is called which increases the count in the app component State this triggers a rerender of counter updating the displayed count so that’s it for the counter. JS and now we are going to create the app.js now here we are on the app.js section so let us have a look on the app.js so for imports we are importing use state from react this hook manages state within the component and after that comes the counter so counter component from counter that we have created this child component will display the counter and the button from the user interaction now again we are importing this style. CSS from the Style app that we have created after this comes the app components so inside the app component UST state zero initializes account State variable with the initial value of zero and after that count holds the current count and set count is a function that updates the value so state in react is persistent across renders meaning count will retain the value until it’s updated by set count and after that comes the event handlers these functions are used to update the count State based on the user actions first of all we have the increment so it increases the count by five each time it is called by executing set count count plus five and then on we have is decrement a decreases the count by one each time it is called and then we have this reset so reset sets count back to zero by calling the set count zero so by defining these functions the component becomes interactive allowing user to modify the state and see the changes reflected in the real time so that’s it for the app.js we’ll just save this file we’ll just save the counter. JS and after that let us move on to the style. CSS so after writing counter. JS app.js and we are just going to keep the index.js as it is we have just excluded the codes those were not necessary so we have already seen those in the first counter app that we created for hello world so now we’ll just save the index.js and for styling. CSS first of all we have just styled the body using the font family display justify content alignment of items height and the background color after that we have styled the app using these styling techniques and then we have styled the counter after that we have styled the button and that’s it we have made the button hover so that’s it for the styling now we have created the counter app here we learned about three concepts the properties the state and the event listeners so these are the three core components that we have learned and now we’ll just save this project and we’ll run our project so here is the counter app that we have created so when we are clicking on increment the count is incrementing by five when we are clicking on decrement it is decrementing by one and after clicking the reset button it is being reset to zero so this is the simple app that we have created using props States and event listeners so now that we have a proper idea about prop State and event listeners we’ll now move on further and we’ll just create our Mario game so before that as we have now understanding about the prop State and event listener so basically what are components so all the files that you can see inside the source are components of the real so app.js is one component counter. GS is one component index.js is one company so again the other core concept of react was GSX so this right here the code that we are able to see is basically jsx syntax so basically this is a JavaScript code but we have written HTML inside the Javascript file so this is called GSX so now we have clarity about the Core Concepts of react first of all the components here are the components then the GSX these are the GSX and after that we have properties these are the properties and then these are the event handlers and we have also seen the State Management so after that we have this styling so that’s it about the increment project and I hope you are clear with the concept of prop St and event handlers so now that we have clear understanding of the concepts of react we’ll be starting our Mario game so let us now understand how we created this Mario game using react so first of all we’ll start with the sources in this there is a section named esset in this we have included the audio font and the images that we are going to use so after this we are going on the section of components so in inside this components we have one section that is atoms in this we have included all the components that are being used in this game for example we are using Birds bricks clouds key message obstacle sun and all so after this we have this molecules in this we have included the footer the loading screen Mario the corrector and the mobile controls again we have included the title and the score so now one by one we are going to have a look on this codes so first of all let us start with birds so inside Birds there is a section of bird dogs so first of all we are importing the use effect and the use state from the react and after that we are importing the bird. CSS from the stylesheet file so first of all here is ready is a piece of state that starts as a false it will later be said to True when the document is fully loaded and after this the use effect hook runs after the component mounts it defines a function set load that sets is ready to true so after that this part checks if the document is ready to fully load it if it is it calls the set load immediately if not it adds the event listener for the load event which will call set load once the page finishes loading the cleanup function removes the event listener if the component unmounts or if the effect runs again at last we have the return statement the component return a diff containing another diff for the birds the class name of the inner diff changes based on the is ready state if is ready is true it adds the class bird animate which likely triggers an animation so that’s it about the bird. GS now let us look at the bird. CSS so for that first of all we have provided this GF and then we have included the background repeat as no repeat background size height right width position top and left then we have provided the bird animation and after that we have provided the key frames and media queries so that we are already familiar with what are key frames and media queries so now after bird. JS we have bricks. Js so again in bricks. JS the component Imports the use effect and use state from react to handle the state and a life cycle events so it also Imports the CSS file . CSS to style the components and after that we have this const is ready so here is ready is a piece of state initialized to false the state will eventually determine whether the animation of the brick is active or not after that we have is use effect the use effect hook runs when the component mounts it defines the function set load that sets is ready to true and after that we have this LL statement this part checks if the document is fully loaded and if it is document. ready state is complete it immediately calls set load if the document is not loaded yet it adds an event listener for the load event which will call set load once the page finishes loading the cleanup function removes the event listener if the component unmounts or if the effect runs again and after that we have this return statement the component returns are div with a class bricks container inside it there is another diff for the bricks the class name of this inner diff changes based on the is ready state if is ready is true it adds a class brick animate which likely triggers the animation so after this brick. JS we move on to brick. CSS so again in brick. CSS we have given this background image and The Styling that we have included is background repeat background size height width position bottom and lift next on we have brick animate these are the animation that we have provided and after that the key frames and the media queries so now after birds and Bricks let us move on to the clouds so again in cloud. Gs we have included all these functions just like brick. JS and cloud. JS so you can just pause this and go through the code again it is basically the same function we are just importing the cloud. CSS and we have changed this return statement so after this again we have cloud. CSS we have included the background image background repeat background size height width position top and left again we have included the Cloud’s animation and key frames and media queries you can just pause this video and go through the code once and if you have any doubt you can just comment in the comment section after that we have this key message JS inside this key. JS for first we have imported the key message. CSS for The Styling so inside this we have basically created one press container and we have given two paragraphs including Enter key and space key so here Enter key is for starting the game and space key is for jump so after that we have included obstacles so now let us look at the obstacle dogs code so inside this obstacle. JS first of all the component Imports the CSS styling images for the obstacle and necessary hooks from the react it also Imports Redux Hook from the state management so after that dis patch is used to send actions to the Redux store is playay and speed are selected from the Redux state where is playay indicates if the game is running and the speed represents the current speed of the game so now after that we have this use effect that sets up the interval that runs every 100 milliseconds it dispatches action to update the redu store from the current dimensions and positions of the both obstacles by accessing their boundaries rectangles through the Rifts each property height left top width are getting updated from the both obstacle so after that we have one more use effect so this use effect runs whenever the speed value changes if the speed is non- negative it sets the time out to adjust the speed to the small value after 1 second this could be used to ensure that the game continue to run smoothly so after that we have this return statement the component returns a container of the obstacles each obstacle is represented as a image this class name changes based on the isplay state adding moments classes if the game is active the style props adjust the animation duration based on the speed making the animation faster or slower depending upon the game’s current speed so that’s it about the obstacle dogs now we’ll move on to the obstacle. CSS so here we have provided some basic styling techniques to obstacle container obstacle 1 2 and then we have separately styled the obstacle one and two and then obstacle one move then obstacle two move then we have provided some key frames and media queries so again if you have any doubt you can just comment down in the comment section and rest you can pause the video and look at the code so after this all we are left with the Sun so we are importing the sun. CSS for The Styling and we have included one class container Sun container and then we have given the class name as Sun so again inside the CSS we have provided the background image of the sun which is a gif form and then we have provided The Styling that includes background repeat background size height width position top and right and again we have included some media queries into it so that’s it about the atom section now we’ll move on to the molecules so inside molecules what we have done we have created footer loading screen Mario the corrector score and the title so now we’ll just quickly look to the every molecule so before moving on to the molecules we have just imported everything that we have created Birds bricks clouds key messages obstacles and Sun so before moving on to the molecules here we have imported all of these things so each Line Imports the component of specific file path for example bird component is imported from the birds file the imported components are presumbly react components that will be used in the application to render the different parts of the UI and after that this line exports all the imported components into single object by doing this it allows other modules to import any of these components easily from one Central File instead of importing each of them individually from their respective files so now first of all let us look at the Mario character development so here the component Imports style images or the Mario character audio files for jump death sound and various hooks from the react and reds so after that this used dispatch hook allows dispatching actions to the redex store several State values are selected from the redex store to manage the game State such as whether Mario is dead the game is loading or the Mario’s position and the Dimensions now after that these selectors retrieve the position and dimension of two obstacles allowing for the Collision detection now after that we have this audio handling for this we are using use memo hook to create audio objects for jump die and background music this ensure that these objects are only created once optimizing the performance now after that this handle key function listens for the key presses if the enter key is pressed the G is isn’t playing it dispatches an action to set the game as ready and if the space key is pressed while Mario is not jumping that triggers the jump and plays the jump sound after 400 milliseconds it stops the jump sound and resets its playback time so after this right here you can just pause and have a look at the code 1 by one and if you have any doubt you can just comment in the comment section below so after this we have again used this use effect that mon the Mario’s position and checks the collision with the both obstacle so now if the Collision is detected it dispatches the action to set Mario as dead and plays the dead sound it also repeats the game score after the short delay so that’s it about the Mario character and you can just go through the code line by line this code just shows the use of use effect and how we are controlling the Mario and when the Collision is happening to change the state of the Mario and everything so now let us quickly look at the CSS of Mario so here for Mario we have given the styling technique which includes width height position bottom and left then we have animated the jump and then we have added the key frame and then we have added the animation if Mario dies and key frame again for that and we have added some media queries so now after the Mario character development let us quickly look at the footer section so this component Imports the CSS file for styling which would typically Define how the footer looks and after that this defines the functional component named footer functional components are simpler way to create the components in the react and after that we have this return statement inside this div it displays the text copyright followed by the current year which is dynamically obtained from the new date get full year this ensures that the copyright year is always up to the date without the manual change it also includes the anchor tag that links the placeholder the target blank attribute makes the link open in the new tab and then R adds the security feature to prevent the new page from the accessing the previous ones and that’s it for the footer section now this line basically exports the footer component as a default export of the module making it available for import in the other files so that’s it for the fooo section JS now this is the pH section CSS we have just styled the copyright button and the copyright link so now after the foter design let us look at the loading screen so inside the loading screen first of all we have added the import statements this Imports necessary hooks use effect and use state from the react the Mario character image CSS for styling and Redux function set loading screen and use dispatch so now after this we have added this this basically declares the functional component named as loading screen so now after that we have used is ready so is ready is the state variable initialized to false if it will set to True after the specified delay indicating that the loading is complete so again dispatch is a function from Redux that allows the component to dispatch actions to the store and after that we have use the use effect this use effect runs once when the component mounts due to the empty dependency array it sets the timer for 5 seconds after which it updates is ready to True indicating the loading is completed and then at last we have the return statement the component renders a div with the class loading screen container it displays the Mario character image using the image tag while is ready is false it shows an H1 element with the text loading once is ready is true it displays the enter button when the button is clicked it dispatches the set loading screen false action likely to update the global Redux state to hide the loading screen and then at last we have this export default loading screen so that’s it for the loading screen now let us look at the CSS of the loading screen so inside the loading screen CSS we have provided width height position top left bottom right background color color display Flex Direction justify content alignment of items Gap and Z index then we have styled the Mario loading then the loading title and then the enter button after that we have provided this hover effect to the enter button so that’s it you can go through the code line by line and again that is it for the loading screen so now let us move on to the mobile controls again we have added the Imports here and after that we have added this mobile controls this defines the functional component that is named as mobile controls and after after that we have added this is play Mario jump is die so this indicates if the game is currently being played Mario jump indicates whether the Mario is currently jumping is die indicates if the game is over and dispatch is used to send the action to the Redux store after that we have used use memo to create an audio object for the jump sound this ensures that the audio is only created once for the performance efficiency and after that this function is triggered when the start button is clicked it checks if the game is not already playing and if it is not over if the both conditions are met it dispatches an action to set the game to ready and after that we have created this function this function is called when the jump button is clicked it checks if the Mario is not already jumping and if he isn’t it dispatches an action to set him as jumping plays the jump sound after 400 milliseconds it stops the sound and resets the playback time and at last we have this return statement so in this the component renders the div with the class mobile controls container it conditionally renders the start button when the game is not playing or not over again the over button when the game is over the jump button when the game is playing and at last again we have this export statement and now again we have the styling of mobile controls so here is the media query and then the mobile controls container and after that we have styled the start button jump button and control button again we have styled these button by applying the filters and we have given the background color and then we have given the background color to the control jump button so that’s it for the CSS of mobile controls and the JS off mobile controls you can go through the code line by line and again comment down if there is any doubt now at last we’ll move on to the calculation of the score so now we are at the score. JS again we have added the import statements that Imports the necessary hooks from react Redux function and CSS file so after that we have this declaration this defines the functional component named as score and after that we have used this query selectors for score last score play die and dispatch so the score shows the current score from the RCT store and the last score shows the last score recorded and the play is basically a Boolean indicating if the game is currently being played die is basically a Boolean indicating if the game is over and dispatch is a function that is used to dispatch the action of the Redux store and after that we have included this high score this basically initializes the state variable high score it retrieves the high score from local storage passing it as an integer or defaults to zero if the high score is not found so after that we have used this use effect this use effect runs whenever the dependencies change that means incrementing the score if the game is being played or not over it sets the time out to increment the score by one to every milliseconds and then updating the last score and the high score and after that we have the return statement so this component basically renders the div with the class score container if the game is currently being played it displays the current score if the game is over it displays the last score it always displays the high score along with that and at last we again have the export statement so that’s it for the score. GS and we’ll move on to the score. CSS so for score. CSS we have just applied these styling techniques including the media query and the styling of high score so after that last one we have is title so inside this title. JS first of all the component Imports the CSS file for styling ensuring that the component has desired looks so again after that we have this cons title this basically defines the functional component named as title and after that we have this return statement so the component Returns the div with a class name title container which acts as a wrapper for the title elements inside this div an image element displays the Mario logo it uses the imported Mario image as a source and it has the class Mario logo for styling and H1 element contains the text Mario jump styled with the class title this serves as the main title of the game and again we have the export default title so here is the styling so first of all here we have styled the container then we have styled the Mario logo then title and then we have added the media queries so that’s it for the title now let us quickly go through this index.js file so here each Line Imports the specific component from the corresponding directories so footer displays the copyright information loading screen shows the loading animation and enter button Mario represents the character and mobile controls provide the button for the mobile users score displays the current last and the high score title basically displays the game title and after that this line of code exports all the imported components as named export this means that when importing from this module elsewhere you can access each component by its name so again in the other index .js file we have exported the atoms and the molecules so that’s it we have covered all the atoms and the molecules that we have made for the Mario game so now what we are going to do is we are going to run our project so for running our project we are just going to add the command and then we’ll be able to run our project so here we are going to add the command to run our project so we are just going to write that’s it we are going to give the command as npm start and it will start our project so here is our game here is the output of our Mario game it is the landing page we can just click on enter and it is basically the screen here we have the enter key we have to press the enter key to start the game and then we have to press the space key to jump here we calculate the score the high score we have added these GIS deps of birds clouds sun and the bricks and here we have the Mario character so here is the footer basically we have designed the copyright and this is the title so this is the whole project that we have created using the react so I’ll just quickly enter key and now I can see the game has been started so again I can jump using the space key and my score is being calculated here my current score and the high is being calculated here so this is the final project that we have created using [Music] react starting with the first reason to learn react which is react is easy to learn most developers love react because it is efficient declarative and flexible what is even more important and exciting is that learning react is easier than learning other JavaScript Frameworks if we compare react with angular on learning basis react is a library and a complete solution that is built around one main concept which is to give you more freedom in how you use the library to compose and organize your own component based architecture while angular in turn is more like Constructor or a tree of components so you need to understand how its elements behave work and combine together nevertheless react’s relative Simplicity does not not purely depend on its file structure and component model but also making the code easier to understand and launch of course react doesn’t burden developers with too many things to be mentally Managed IT generally does have a simpler file tree and flexible component model but also that’s a significant benefit react tends to have a substantially shorter dependency list while angular’s dependencies from a dising set that’s problematic to track react aims to make develop life easier by considerably shortening the equivalent lists the more difficult a technology is to learn the longer it takes to start the development process therefore a steep learning curve is one of the main reasons why react has gained so much traction in such a short time given react Simplicity businesses today are more inclined to use it thus building their projects faster now moving towards the second reason to learn react that is increased job opportunities there are thousands of jobs in the world which demand react GS skills there are more than 43,000 jobs available on LinkedIn alone in India for react as compared to 2019 there has been 184% of increase in the openings for rad GS developers in the year 2020 according to India Today a quest report States after cid9 reactjs developer is one of the top digital skilled jobs in demand this quite a huge number of job opportunities makes react one of the skills most of the application developers want to learn and secure a good job third reason to learn react could be attractive pay scale of course salary is important today react has the best pay scale on most of the job suggesting websites like LinkedIn glass door Etc talking about the salary Trends in India the current average salary for roles of react domain is 735 5K which includes the average salary of 597k for frontend developer or engineer the average salary of 654k for software engineer and the average salary of 1 million for senior software engineer now this could be a major reason to learn react because money actually matters in professional career the next reason to learn react is easy migration most of the communities that were not aware of reactjs are now migrating to the reactjs as it is very easy to understand and Implement they have started rewriting the code on react some top companies like Reddit BBC Netflix Facebook as PayPal instacart Uber Eats Airbnb Twitter OK Cupid Netflix Etc are using react this increases the job requirement of react skills in the world a lot of successful and big organizations dare to migrate on react because react provides the facilities which help in Migra ation easily as mentioned in react documentation when react deprecates a pattern they study its internal usage at Facebook and add deprecation warnings which let them assess the impact of the change sometimes they back out if they see that it is too early and they need to think more strategically about getting the code bases to the point where people are ready for the change if they are confident that the change is not too disruptive and the migration strategy is viable for all cases they release a deprecation warning to the open-source Community they are closely in touch with many users of react outside of Facebook and they monitor popular open-source projects and guide them in fixing those deprecations given the sheare size of the Facebook react code base successful internal migration is often a good indicator that other companies won’t have problems either nevertheless sometimes people point out additional use cases they haven’t thought of and they add Escape hatches for them or rethink their approach react not only cares for the migration from other technology but also from older version of react itself to the newer version of react they don’t deprecate anything without a good reason they recognize that sometimes deprecations warnings cause frustration but they add them because deprecations clean up the road for the improvements and new features that they and many people in the community consider valuable for example a warning about unknown Dom props in react 15.2.2 was added many projects were affected by this however fixing this warning is important so that they can introduce the support for custom attributes to react there is a reason like this behind every deprecation that react adds when they add a deprecation warning they keep it for the rest of the current major version and change the behavior in the next major version if there is a lot of repe manual work involved they release a Cod Mod script that automates most of the changes code mods enable us to move forward without stagnation in a massive code base and they encourage you to use them as well so that’s how react helps in migration the next reason to learn react is reusability which is a boon for developers react doesn’t require big lines of quotes to program an application in react we say that everything is a component a user writes small codes called components and combines them to form another component simply any app made with react is a tree of components react follows write ones use it anywhere principle for example if we are building an Instagram app using react Jus we will have many components like a separate component for navigation another one for the story section also for news feed then for profile and all other section of the application components are basically like functions the word has seen a big jump in the increment of the number of developers switching to react JS for which reusability of code plays a vital role moving to sixth reason to learn react which is data binding data binding is the process of synchronizing data between the model and view there are two basic implementations of data binding one directional and twood directional react uses oneway data binding which doesn’t allow child elements to affect the parent elements when they are updated this makes code more stable and easier to debug this also makes the code predictable and ultimately improves the performance of the application if we compare react data binding approach with any other JavaScript framework let’s take angular angular uses two-way data binding to connect the Dom values to the model data this makes it simpler to work with but also has a negative impact on performance it makes it slower when the application deals with lots of data requests it also makes debugging difficult and results in less predictability another reason why you should use react is its flexibility that manifests itself in a number of ways flexibility is especially visible when it comes to the use of react for web development web development projects tend to grow into bulky systems that may be difficult to fix or enhance first when we talk about reacts flexibility we refer to the libraries innate modularity as we know reacts architecture allows bundling front-end code into custom components this providing a solid foundation for the overall development process optimization the react’s position on the scale of opness is a stable the library neither locks nor guides you into their way of doing things on the one hand it dictates how you should create reusable components on the other hand it gives a free hand to decide how to handle routing and testing our organized dependencies and more this degree of Freedom can turn out confusing for newcomers initially but with time working in a react development environment becomes a pure delight for developers this way react allows you to write clean modular code breaking the project into separate components as a result when code is modular it gets easy to maintain and scale second react is super flexible in the sense that it can be integrated with other third party libraries and MVC Frameworks you can choose to create a react project from scratch or gradually introduce react to your existing literacy code base creating a new react app is not too difficult embedding react components one by one into your code written using other Technologies is not a problem as well and vice versa it’s really relatively easy to integrate third party libraries into react applications so using react for front end is a great choice besides while we are on the topic of flexibility it should be noted that another significant advantage in the ease of transfer and support of react native apps react native is actually a framework for building native apps using react so if you know how to develop applications using react you are already well on your way to getting well worsed in react n to they are conceptually similar most of the react Concepts transfer to react native thus you can waste no time learn react native and start developing mobile applications for IOS and Android with a native look and feel if we compare react and angular on this as I have discussed just now react gives us the freedom to choose the tools architecture and libraries for developing an application on the other hand angular offers a limited amount of freedom and flexibility now let’s see the E reason to learn react that is fast rendering react is a client side JavaScript library that uses server side rendering why is it a benefit enhanced support for serers side rendering tones react into a robust performance oriented solution for creating content focused applications be it a web application or native rendered applications for Android and iOS react has everything for a brilliant performance faster rendering has massive impact on reducing load times and quickly adapting the performance in real time based on user traffic flow it’s common knowledge that the faster the page load is speed the more users won’t leave the website and will use your service or purchase your product this is crucial for online business and after covid-19 online businesses have seen a new Milestone react’s virtual Dom is basically the prime cause of faster rendering and better performance of react apps first of all the react virtual Dom that is virtual document object model can be understood as a tree data structure of plain JavaScript objects accordingly react’s advantage over other Frameworks is that it creates virtual Dom as a copy of the real Dom and whenever the state change in a react component happens it reenders the virtual Dom first compares the old version to the new one and eventually only the required minimum is changed in the real Dom instead of re-rendering the entire UI reacts virtual Dom serves as a layer between how things are supposed to look and the actual processes happening to render all of these things onto the page now let’s move to the ninth reason to learn react that is easy debugging when something goes wrong it is important that we have breadcrumbs to trace the mistake to its source in the code base in react props and state are those breadcrumbs if you see something wrong on the screen you can open react da tools find the component responsible for rendering and then see if the props and state are correct if they are you know that the problem is in the component render function or some function that is called by render function the problem is isolated if the state is wrong you know that the problem is caused by one of the set State function calls in this file this two is relatively simple to locate and fix because usually there are only a few set State function calls in a single file if the props are wrong you can Traverse the tree up in the inspector looking for the component that first Poison the Well by passing bad props down this ability to trace any UI to the data that produced it in the form of current props and state is very important to react it is an explicit design goal that state is not trapped in closures and combinators and is available to react directly while the UI is dynamic we believe that synchronous render functions of props and state turn debugging from Guess work into a finite procedure we would like to preserve this constraint and react even though it makes some use cases like complex animations harder react results in not only easily debuggable code but also highly testable applications react itself makes it easier to create a clean architecture that is friendly to testing if you are working with react we don’t have to do any extra configuration of UI tests instead we can use justest that is basically Facebook’s JavaScript test Runner that is configured right out of the box and works seamlessly with reactjs applications if we choose to develop a new application using Create react app just will go with it by default so we will be able to execute tests rapidly just as a node based Runner therefore while testing a reactjs application a developer can run unit tests in a node environment not in real browser by mocking components under test traditional UI test execution tends to be slow but with react UI tests are run quite faster UI tests often end up being brittle however by separately testing single react components in a node environment we can avoid flakiness and ensure test results reliability this is because in such a way we will be in the position I to test pure functions which unlike with traditional endtoend UI tests is much less time consuming both in terms of writing and maintenance if we are running unit tests using react we can be sure that it won’t be a big challenge to write these tests quickly and update them easily now here strong documentation and community support for react becomes the final 10th reason to learn react being an open-source Library reactjs has what it takes to keep attracting more and more newcomers to its Community which makes it stronger over time the feeling of belonging to a community is a solid base that a software developer can rely on when learning new technology or working on a complex project as react developer you will definitely get this feeling the react library has once gotten into the growth Loop and seems to intend to remain there as long as possible as of today reactjs is one of the five top rated repositories on GitHub with over 170k stars and over 5 million applications publicly admitting to using it react has a rich ecosystem to benefit from or contribute to besides finding one’s way around all this information won’t be a big challenge as the react documentation can be easily found on the official website the community is active so you can get rapid feedback or response to your inquiry once you feel stuck currently on stack Overflow there are over 14 million questions tagged react JS that have at least one accepted answer that’s incredible how responsive the community is so once you encounter a problem chances are someone has already had the same problem and there is a solution to it so that you will only have to copy paste it from the corresponding discussion thread with this I have covered top 10 reasons to Lear nonreact last but not the least I want to say traditionally open-source projects get along without full-time developers and are being improved through the work of independent contributors who are committed to the project to a certain degree but reacts contributors commitment is much deeper than that which has a direct positive impact on react developers coding [Music] experience Js X jsx stands for JavaScript XML it’s an XML or HTML like syntax used by react it extends the ecma script so that XML and HTML like text can coexist along with JavaScript react code this syntax is used by the pre-processors like Babel to transform HTML like text found in JavaScript files into standard JavaScript objects with jsx we can go a step further by again embedding the HTML code inside the JavaScript this makes HTML codes easy to understand and boosts javascript’s performance while making our application robust a virtual dor like an actual dor a virtual dor is also a note tree that lists the elements and their attributes and content as objects and their properties react’s render function creates a not tree out of the react components it then Updates this tree in response to the mutations in data model caused by various actions done either by the user or by the system itself the virtual Dom basically Works in three steps first whenever any of the underlying data changes the entire UI is rendered in the virtual Dom representation then the difference between the previous domor representation and the new one is calculated once the calculations are completed the real Dom will be updated with only those changes that have actually been made you can think of this as a patch in a virtual dorm the changes are applied only to those Elements which have actually changed or updated this will not just make our application faster but also there is no memory vage testability react views can be used as functions of the state here state is basically an object which determines how a component will render and behave thus we can easily manipulate with the state of the components which we pass to The reactjs View and take a look at the output and triggered actions events functions Etc this makes react applications quite easy to test and debug server side rendering or SSR server side rendering allows you to pre-render the initial state of your react components at the server side itself with SSR the server’s response to the browser becomes only the HTML of the page which is now ready to be rendered thus the browser can now start rendering without having to wait for all the Java script to be loaded and executed as a result the web page loads faster here the user will be able to see the web page in spite of react still downloading the JavaScript creating the virtual domor linking events Etc at the back end oneway data binding unlike other Frameworks reactjs follows the unidirectional data flow or one-way data binding A major advantage of one-way data binding is that throughout the application the data flows in a single single Direction which gives you better control over it because of this application state is contained in specific stores and as a result rest of the components remain Loosely coupled this makes our application more flexible leading to increased efficiency Simplicity the use of jsx files makes the application really simple easy to code and understand as well even though you can use plain JavaScript over here using jsx is much easier react’s component based approach along with the distinct lifestyle methods also makes it very much simple to learn so that was about the features of react okay so now that you’ve understood the features of react let’s move on and take a look at the prerequisites that are required in order to learn react the first and foremost prerequisite is HTML HTML stands for hypertext markup language and it is the standard markup language for creating web pages and web applications a markup language is a computer language that is used to apply layout and formatting conventions to a text document markup languages make the text more interactive and dynamic it can also turn text into images tables links Etc the next prerequisite that you will need to know is CSS CSS basically stands for cascading style sheets CSS is a technology that is proposed and developed by the worldwide Web Consortium or the w3c for short it was released to help free web developers from the tedious process of inline styling and make styling a separate entity in itself next up is Javascript JavaScript is a lightweight interpreted programming language with objectoriented capabilities that allows you to build interactivity into otherwise static HTML Pages the general purpose core of this language has been embedded in Netscape Internet Explorer and almost all of the web

    browsers following JavaScript is npm npm stands for node packet manager it is the default packet manager of node.js that is completely written in JavaScript it was developed by ISAC zutter it was released in 2010 and since then it is responsible for managing all the nodejs packages and modules npm is the world’s largest software registry which is completely free and open- sourced developers all over the world make use of npm for sharing software code editors or Ides code editors and Ides are integrated development environments are platforms where programmers write their code and produce their final products some examples are Sublime Text atom Visual Studio code Etc so basically if you want to write your react code you will need to make use of any of the code editors or IDs okay so now moving on towards the next topic which is the react architecture as mentioned earlier react is the v in the MVC architecture the M or model architecture is provided by flux plux is an architectural pattern that enforces a unidirectional data flow it controls derived data and enables the communication between multiple components using a central store which has authority over all the data any update in data throughout the application must occur here itself plux provides stability to the application and reduces time errors so now let’s take a look at some of the important Concepts in react the first thing that you should be aware of is components in reactjs everything is a component if you guys remember I’ve already given the one Lego House application example earlier on in this session just like the Lego blocks are combined together to make a single structure components and react are integrated together to build one bigger and dynamic application so therefore in react the entire application can be modeled as a set of independent components these components basically serve different purposes components also enable us to keep the logic and the view separate in react multiple components are rendered simultaneously State and props state is the heart of react components they are basically the source of data and must be kept as simple as possible basically states are the objects which determine the component rendering and behavior they are mutable and can create Dynamic and interactive components States in react are accessed via this state function states also have something called as state life cycle so basically we need to initialize resources to components according to the requirements this is called as mounting in react it is critical to clear these resources taken by components whenever they are destroyed this is done in order to manage the performance and is called as unmounting in react it is not essential to use State life cycle methods but you can use them if you wish to control the complete resource allocation and retrieval process props props is the Shand for properties in react they are readon components that must be kept Pure or immutable props are always passed down from the parent to the child components throughout the application so therefore all the user needs to do is change the parent component State while the changes are passed down to the child component through props on the other hand a child component can never send a prop back to the parent component this helps in maintaining the unidirectional data flow and is generally used to render the dynamically generated data keys keys in react provide identity to components keys are the means by which react identifies components uniquely while working with individual components we do not require key as react takes care of key assignment according to their rendering order however we need a strategy to differentiate between thousands of elements in a list so this is where Keys come into picture if we need to access the last component in a list using keys it saves us from traversing the entire list sequentially Keys Also Serve to keep a track of which items have been manipulated they should be given elements inside the array to give elements a stable identity debugging in react now there will be a point when a developer goes through a roadblock it could be as simple as a missing bucket or as tricky as segmentation Falls in any case the earlier the exception is caught the Lesser is the cost overhead react uses compile time debugging and detects errors at an early stage this ensures that errors don’t silently turn up at the run time Facebook’s unidirectional data flow allows clean and smooth debugging fewer stack traces lesser clutter and an organized flux architecture for bigger applications event handling and manipulation of State whenever an event such as a button click or a mouseover occurs we need to handle these events and perform the appropriate actions this is done using event handlers so those were some of the important concepts of react that you should know when you’re learning react so now talking about the learning curve of react react unlike angular has a shallow learning curve and it is very much suitable for beginners the es6 syntax is easier to manage especially for smaller to-do applications in react you code in the JavaScript Bay giving you the freedom to choose your tool depending upon your need on the other hand angular expects you to learn one additional tool that is typescript which can be viewed as the angular way of doing things in angular you need to learn the entire framework if you’re just building a simple UI application now let’s move on so once you’re done with learning the basic concepts of react you’ll have to adopt the project-oriented learning approach this is because whenever you create a project you will have a 360° learning this is because when you create a project you will have to do everything by yourself therefore you’ll make use of all the programming Concepts resulting in better understanding and implementation remember that you do not have to master the world in your first project itself so start off by choosing a very simple one complete it by yourself and try your best not to copy anything from anywhere else as you proceed you can take a bigger applications and work on them it is sure that you will face difficulties while making your applications however it comes with a reward of learning if you are stuck at some point in your project try to break down your problem into minor parts and then work on each of them one at a time now once you’ve decided to learn react remember that you’re not alone there are a number of developer communities that will help you along the road in this session I’m going to be discussing about GitHub stack Overflow and edura Community GitHub as many of you would be aware of is the world’s leading software platform that brings together developers from all over the world it allows you to build your programs share your work or discover what you are looking for you can also engage with other programmers by asking them your doubts Etc stack overflow stack Overflow is another open community that entertains anyone who wants to code it will provide you with some of the best answers for even the most trickiest questions and errors and will also help you share your knowledge with others using stack Overflow not to forget if you have any doubts or queries regarding any of the Technologies you guys can also check out the edura community website and get all your queries answered by experts also make a note that a key to remember what you learn is to share so make sure you share what you learn with others last but not the least stay updated technology sees New Heights every day the version that you learn today will get modified in the upcoming days so make sure you keep yourself updated with all the latest react versions and update your projects [Music] accordingly now aspects of react JS there are three important aspects of reactjs we will talk about first is the virtual domor second is the data binding and third is the server s side rendering but before that if I talk about the architecture of a reactjs application any reactjs application is composed of a set of components so it includes n number of components and the inputs to these components are the properties which are referred to as props and estate and this complete architecture of components props and estate we will be talking about in the later slides so let’s talk about what are the different aspects of react chairs now there are few things you should know in advance before you start playing around with react so if you have never used JavaScript or the Dom at all before for example so I will suggest that please get familiar with those Concepts before trying to tackle or play around with reactjs so if I say what are the prerequisites to play around with reactjs so you should have familiarity with HTML and CSS you should have basic knowledge of JavaScript and programming you should have basic understanding of Dom Dom stands for document object model then you should have familiarity with es6 standards which we talked about so you have to know ESX syntax semantics and features and then finally you have to know what is nodejs and how npm is installed globally so these are some of the prerequisites I talked about to start with reactjs so let’s talk about virtual Dom now this is the first aspect we want to know about reactjs so let’s talk about the problem first what is the problem so Dam manipulation is the heart of modern interactive app but unfortunately it is also a lot slower than most JavaScript operation so when you write in JavaScript document. getet element by ID this is the ID of the element do inner HTML equal to some value now what happens actually behind the scenes what happens is that browser need to pass this HTML it removes the child element updates the Dom value with the new value then there is a complete recalculation of the CSS for the parent and child for the complete tree and then the layout gets updated so that is each element exact coordinate on the screen and then finally there is a complete traversal of the tree or the render tree and then it gets displayed on the browser now what happens as you can see on the point number four this is very much heavy that is recalculating of the CSS and change layouts because they uses a complex algorithm they affect and finally they affect the performance of the application and as well as updating the Dom properties it’s very complex now here we are talking about only one range now let’s say suppose if you want to update the Dom document object model 10 times directly then all the above six steps which I have talked about they will run one by one and they will update the Dom algorithms which will take whole lot of time to update all the Dom values that is why we say that real Dom is always lower than the virtual Dom please remember virtual Dom is a aspect or you can say concept which is introduced by reactjs now this slowness of the application can be made worse by the fact that most JavaScript Frameworks update the Dom much more than they have to for example let’s say that you have a list that contains 10 items for example so you check off the first item now most of the JavaScript framework would rebuild the entire list that is the complete 10 list that’s 10 times more work than necessary so only one item is changed but the remaining nine gets rebuilt again and again exactly how they were before so rebuilding a list is no big deal to a web browser but modern websites can use huge amount of Dom manipulation inefficient updating has become now a serious problem so what happens when you try to update the Dom in react the reconation process so what happens is that the entire virtual Dom gets updated the virtual Dom gets compared to what it looked like before and now you have updated it so react figures out the difference or which objects have changed only those change objects get updated on the real Dom and then the changes on the real Dom they cause the screen to change so I can say that in react for every Dom object there is a corresponding virtual Dom object so like any actual Dom virtual Dom you can say it’s a note tree that lists the elements and their attributes and content as objects and their property to directly change what is there on the screen manipulating the Dom is a slow process but manipulating the virtual domor is a very fast process or you can say it’s much faster because nothing gets drawn on screen it’s just like a manipulating the virtual domor as editing a blueprint as opposed to moving the rooms in an actual house if you can see that on the screen in the given tree the red one are the ones which have been changed and they have only been patched to the real domor instead of the complete tree so that is the power of a real Dom you can say now the important thing that how does react uses virtual Dom it’s very important so as I said that in react every UI piece is a component and each component has a state so react follows the observable pattern and listens for State changes and whenever there is a change it has been updated in the virtual Dom which gets reflected to the real Dom so in summary what I can say that what happens when you try to update the Dom in react so what happens that the complete virtual Dom gets updated the virtual Dom gets compared to what it looked like before you updated it and then it reflects the changes on the real domor which causes the screen to change that is the concept of a virtual domor now let’s talk about another aspect of reactjs which is data binding so reactjs follows very important to learn that reactjs follows unidirectional flow of data or one-way data binding as comp comp to other Frameworks which supports two-way data binding so in reactjs throughout the application the data flows in a single Direction which gives us a better control over the application so as you can see here that data flows from view to action from action it flows to dispatcher on dispatcher multiple actions can work and from dispatcher it goes to a store so react apps are organized as a series of nested components these components are functional in nature that is they receive information through arguments now if I talk about this oneway data binding or unidirectional data flow so flux I want to talk about little bit about here that flux is a new kind of architecture that Facebook uses when it works with react flux is more of a pattern than a framework and it has four main components you can see on the screen the one component is dispatcher now what dispatcher is doing that it receiving the actions and and it broadcast its payloads to the registered callbacks or to the store the second one is the store so a store is acting like a container for application State and Logic the real work in the application is done in the store the store you can say is registered to listen into the actions of the dispatcher and it will work accordingly and it will update the view so if I talk about view or more specifically the controller views so react comp components they grab the state from the store they grab the state from the store and then they pass it to pass it down to the child components so that is how data binding Works in reactjs it’s a oneway data binding or you can say unidirectional data flow now another concept of reactjs that is server side rendering so let’s talk about server side rendering now so server side rendering allows you to pre-render the initial state of your react components at the server side only so server side rendering which is also called as SSR in abbreviated form it is called SSR it is the you can say ability of a JavaScript application to render on the server rather than on the browser this is the exact definition of server side rendering I repeat this definition serers side rendering is the ability of a JavaScript application to render on the server rather than in the browser now there could be a question in your mind that why would you be ever want to do so so now I will list down some of the advantages that why you want to do so because it allows your site to have a faster page load time which is the key to a good user experience it helps in the SEO that is search engine optimization because what will happen that without server site rendering all your server ships is an HTML page with no body so just some script tags that are then used by the browser to render the application so in nutshell what is the difference between client side rendering and server side rendering so in client side rendering your browser downloads a minimal HTML page it renders the JavaScript and fills the content into it this is client side rendering and what is server side rendering on the other hand serers side rendering it renders the react components on the server and what is the output the output is the HTML content so that is the use of server side rendering so we talked about three important aspects of reactjs that is virtual Dom data binding and server side rendering now let’s talk about virtual Dom in detail so if I talk about virtual Dom as you can see on the screen that model gives data to view which in turn creates a Dom for it so here a model so model had information for the user ID and location it has been given this data has been given to the view which in turn has created the Dom the model gives data to the view which in turns create the Dom but you can see over here that if I change the user if I change the user from Len to Max that is the only change which has happened in terms of three properties as compared to three property only one property has been changed and that property only be reflected on the real domor that is the power of a virtual dor so as I talked about that what is a virtual domor right so virtual dor only give updates to the real Dom it not only gives the updates so that the complete page or the complete HTML or css does not get loaded again and again on the screen so now here see if location is changed if location is changed okay if I talk about the previous location the previous location was us it was compared and then you can see in the real Dom the location is changed to UK because virtual Dom it has not put heavy load on The View and makes our processing also very much faster so with reactjs when model gives data to the view if the Dom is empty react will create a Dom for it that is also a beauty or you can say advantage of a virtual Dom now as you can see here that with reactjs when model has given the data to The View and if the Dom is empty react will create a Dom for it but at the same time it is checking with the previous values and if it has found previous value is Ln and the new value is Max the user property has been changed to Max in the real term so let’s talk about the advantages of reactjs now what are the various advantages of reactjs the first one application performance is increased so which means that the creating the dynamic web applications now it has become very easier and reactjs is very much easier to learn now how the application performance is increased we have already talked about that it uses a concept called virtual Dom so enhancement of performance has been done or you can say application performance is increased because of the concept of virtual Dom it is used on the client side as well as on the server side reactjs can be used both on client side and server side and it also known to be a SEO friendly you can say library readability is improved this is one of the greatest advantage of reactj is that the readability of the code or the readability of the application has been improved a lot another is that it can be easily integrated or used with other Frameworks like angularjs or meteor or VI JS even with knockoutjs or emberjs another advantages of reactjs I want to talk about here is that the reusable components so reactjs focuses on the concept of reusability so react UI as we know that it is declared inside the components so if I talk about a component here at this stage so component is like a function that accepts the props as inputs and outputs the declared interface the U should be composed of as many as components as possible to maximize the reusability so the concept says that you should decompose into multiple components your reactjs application at the same time reactjs is a very much famous Library so there are very much great developer tools available out there for you can say Chrome and Firefox there are browser extensions for react available in Chrome and Firefox browsers so these extensions you can say allows you to inspect the react component hierarchies in the virtual Dom so you can select individual components and examine and edit their current properties and state so these are some of the advantages of reactjs reactjs is very much popular nowadays and is used by almost all the developers across the globe now applications of reactjs so there are uh these famous applications which are using reactjs in their uh application or maybe browser application and some are using in their mobile apps so some are also using react native instead of react along with the reactjs in fact so some of the famous applications one of them is obviously Facebook Yahoo Uber Netflix Twitter Instagram Dropbox and New York Times so these are some of the very big or famous applications which are using reactjs or react native in their website or in their mobile mile [Music] apps so first of all we have the jsx so we have under jsx now there are multiple components under rat that makes the entire infrastructure as flexible as possible so like we have jsx then we have riat components then we have props then we have States life cycle events references key and then we have available rout so the are multiple references that we have that we are going to discuss now the core important component first of all is components so let’s discuss on the component on the structure for components first so components are what if you have web page so if you want to update different content if you want to handle different content you can say section separately then instead of refreshing the entire page what we can do we can declare we can add different sections at as different components so that we can Define different Logic for different sections we can have different separate views and then we can render multiple components in the same page where it can all have their own separate Behavior defined right so first of all we have components so components as we discussed in application can be modeled as a set of independent components and different components are used to serve different purposes this enables us to keep a logic and view separate so react renders multiple components simultaneously and components can be either stateful or it can be stateless so before we start creating components we need to include a few import statements so we have to define the import Rea and then only we can import start importing the components and then we can Define the individual functionality for these different components one by one for example here we have this one declared as component we can have the left side bar declared as a component and so on so everything in reat is a component and each component returns a Dom object it spills the entire UI into independent reusable pieces each independent piece is processed separately and it can refer other components in output and it can be further split into smaller components so valid re component accepts a single props object argument to produce a react element and these are called functional as they literally are JavaScript functions so here we can define a button where we can define a prop as on click and then we can link this to any of the other components suppose if this if you talk about the simplest way of defining a component is through JavaScript where we can Define function and then we can Define the entire components and components can Rea can be in two different forms it can be stateful or it can be stateless it can be stateful or it can be States now stateful remembers everything again we can it has its own memory where State doesn’t remember anything it does so as soon as the entire statements are executed it simply clears out this entire memory so core which stores information about components in memory and it can change change States it contains knowledge of past current and possible future State changes it receives information from the stateless components if State change is required it calculates States internal we can say internal state of components and it never changes the state contains no knowledge of past current and possible future State changes and it provides a referential transparency that is for some for same input it will produce same output as well as a part of stateless components then we have props so Props are read only components so whether components are declared as functions or class it must never change a change its props such components are called Pure functions so all component must act like pure functions with respect to the props as what we are going to Define all right now for example let’s say if we want to create any component here we want to define the props as well then we can create a components and then we can create separate props for example if you want to create a component in react then here it’s always advisable to go to source and under Source we can create a separate folder so here we can find folder name as components and then under components we can create the component file for example here we can create a component file as suppose C mp1 suppose here we have suppose header header. JS so if we have one component defined as header. JS we can Define header. JS and first of all we have to when we creating component we can import the react Dom element we we can Define react Tom from react Dom element that we have to that from in which this is currently present so we can Define react Tom then we can declare a simple constant where we can Define con con Conant such as my component we can write any component here suppose here we can Define my component now here we can make use of a simple Lambda function now in here we can create a function we where we can Define okay we want to return and then what exactly we are looking to return here we can Define that those parameters let’s suppose here we want to return as simple S2 as we have I can say component example we can define a simple component example here we can close the H2 element and then we can now once once we have closed it we can close the statements that we have currently opened up and then we can use react dom. render so that this particular my component that we have created this can be rendered this entire component can be rendered here and then we can Define okay in which so here we are going to use document get element by ID and suppose here we want to render this where we want render this in the root ID that we Define in index oral so in in ID we have defined as root let’s change the same thing under index as well so here we can Define this to be root right so here we Define the entire root element here and then once we add we can close IND statements so we can save this and now if you want to include this back in our own statement then we can easily do that right so here we can simply Define our own application we can Define the own index whever and however we want this to be vendored and then for creating a props so Props as we know all that in simple am terms if you say props is basically a shorthand for the properties so react uses props to pass attributes from parent components to child components and props are the argument based to the function or component which is ultimately processed by react so here we can Define multiple properties for it and then we can have it rended depending upon what kind of property we are going to create here so for example here instead of using the return statement here let’s do one thing let’s see here we create a simple function so here we can Define function so okay let’s return the statement here not a problem so after this we can create a simple function let’s create a function here by the name of app so here we can define a function for app and in here we can specify return now under return we can define suppose here we want to return a division and then under division for example we have multiple message that we want to save here so here we can Define message as username for example here we are going to save multiple username then here we can Define message as suppose we have John here we have again another message that means another usern that we want to Define here suppose here we have SEL and here we have another message this can be multiple components we can save suppose here we have mik this can be multiple username that we are going to Simply render here and then when we when we are rendering the element here we can Define the in function right so now instead of Define the the even earlier instead of defining the entire my component we can Define the function and under function we can create a function for message that we have specified here so here we can Define message function and under message we are going to Define this as props with the properties that we have defined all right so here we can Define the entire properties as in how or well we want to render these as a part of the props and components and then we have other properties such as we have state so States basically allow us to create components that are Dynamic and interactive so state is basically private it must not be manipulated from the outside also it is important to know when to use state so it is generally used with data that is bounded to a change for example when we click our toggle button it changes from inactive to active state that you may have noticed and state is used only when needed and we have to to make sure that it is used in render property that we have refined in in our JS otherwise it won’t include in the state and we do not use state with static components the state can be all the state can only be set inside the Constructor alog together so we can include some code Snippets into see a small example so for example we can come back to our editor so let’s say here we can create a new file all together let’s say we name it as state 1. JS now here we can import react from react and then we can also work on importing react Dom from react now basically when we are working on the elements we have to make sure that we import the elements one by one so here we have to import react re Dom now here we can start now for the State Property let’s say here we can Define class for toggle where we want this to be extended not extend react. component that we have imported or we can also or now to work on this one here we also have to import Rea component as well so here we can also import uh if you want to import component then from the same re here we can Define the component as well if we looking to import multiple things and here we can Define react and component both from from the library where we have defined it all right so here we can define a simple class as sole as re component here we can Define us Constructor where we can specify a value for Constructor and then we can Define value such as here we can define a super where we can a super object for having the value and then we can use this dot state so here we can store the state value as this do state and here we can Define is toggle here we can Define is toggle on if it is now here we can Define the property to be true then we can Define this. handle click should be set to using this pointer this handle click dot bind so here we can bind this to the this point that we have selected so as a part of the state now here we can also if you want we can bind this a state here and then we can Define multiple States as in when this when this should be on when this should be off and then we can alter M multiple states by Define the state life cycle as well one by one so we can Define if state is again one then again how we have to switch different states from one state to the other that is something that we are going to look at as soon as we proceed further with the entire module step by step then we have life cycle so Rea provides various methods which notifies when certain stage of life cycle occurs called life cycle methods so these are spatial event handlers that called at various points in components life so code can be added to them to perform various task and they are invoked in a predictable order and entire life cycle is divided into four different phases we have the initial phase where we have get default props get initial State then we have component will Mount render and component did Mount then in the updation phase here we have have should component update component will update render and component did update then in the props change phase we have components will receive props should component update component will update render and component did update and then in impound simply is going to Define component with unmount so component is going to be unmounted after a specific value based on the condition whatever we have defined and events are basically triggered at reactions to specific actions like Mouse over Mouse click key press we can set any kind of event parameters and then we can Define it easily we can do that now as soon as any event is triggered this is going to Simply trigger the vat event and event passes the event arguments to the event handler so whenever any event is specified in GSX the synthetic event is generated and this synthetic event wraps up the browser native event and I pass as argument to the event handler that’s how it is structured and then we we have references so references stand for again and references are basically used to return references to a particular element or component returned by render so when we are rendering any element here then we can use references to specify a particular element now basically this is mostly used for managing Focus text selection or media playback and then we can also be used for triggering imperative animations or we can easily use this with third party Dom libraries as well we can do that these are the main features available in Rat and again we also have the component for rat router as well so reat router is basically a powerful routing Library built on top of reat framework so it helps in adding new screens and flows to the application very quickly so it keeps the entire URL in sync with data that is being displayed on the web browsers so in router we can have an easy understanding of the application views it can restore any state and view with simple URL it handles the entire nested views and resolutions States can be restored by the user by moving backward and forward it can help us in maintain a standardized structure and behavior while navigating it to the implicit CSS transitions we can easily do [Music] that what is conditional rendering in react J okay let’s see the definition in react you can create distinct component that encapsulate Behavior you need then you can render only some of them depending on the state of your application so when you are building some react applications we might often need to show or hide some HTML on some certain conditions right so in simple words what is conditional rendering conditional rendering is nothing but if a given statement is true then the if statement executes or else the L statement will execute so we have an example here for a better clarification now let’s imagine a person is appearing for an exam and the candidate must score 50% so this is the condition here so if the candidate scores 50% then only he will pass this exam or else he will fail so this might be considered as a simple real life conditionally rendering statement or an IFL statement and also I have an interesting fact here conditional rendering in react works the same way the conditions Works in JavaScript okay next we have different methods in rendering so let’s see what are all they first is IFL statement then element variables turn operators and finally short circuit operators let’s see each of it in a detail form here first we have IFL statement and IFL statement will execute the action contained in the if block when the condition is satisfied otherwise it will execute the actions contained in the else block so now let’s check this in a simple syntax and see here we have a condition which is to be evaluated and we have a statement inside the if block so this will execute when the condition there will satisfy or else the statement in the else block will be executed now let’s see this in a practical way now I am using visual studio code as a code editor okay now you can see I have have a user.js file opened here and we have app.js here I have included user here and also imported the user file here okay now let’s start coding now first and foremost we have a scenario here so let’s imagine there are two person one person from the edura team and another person is not a edura team person now now the person from edura if he sign in or if he log in to the this page and he must see a welcome page and if the non edura person signs in here he must see a please sign in page before he signs in so that is what we are going to design today with an simple IFL statement first and we will see the other conditionally rendered methods also so we will start coding here so first we will import react here I have the export default user so this helps me to import the user here so we have to Define it here for better practice now I have imported react here then I am declaring a class user extend react do component and also I am constructing a prop and I’m creating a super class and here I am giving the condition this dot St logged in false here I I’m giving false because the user will not be a member first then after he signs in he will become a member so I’m default keeping here as a false okay then I am rendering this const is logged in this state is log 10 okay here I am returning the condition and return the statement now I’m writing the else part return please sign in for happy learning in Ador yeah now here you can see as I have kept the state as false so default the react will work in local host 3000 so here you can see the output please sign in for happy learning Ura has I have kept this state as false now here I will give the styles for a visible changes you can see in the website so I am giving the Style part okay yeah this is image and I have given a simple Style part here so now if I keep the state as true then this welcome to edura page with an image should be executed so let’s see yeah you can see here welcome to edura with a Eda page image background and if I do false false then yeah you can see please sign in for happy learning in edor okay and also the thing is the IFL statement does not work inside the GSX because IFL statement is not a valid syntax inside the react JS now you might be thinking what is GSX GSX is Javascript XML it makes the code easier to write and add HTML into the react yes now let’s see what is element variables element variables are simple to approach to extract the conditional render into a function element variables are variables that holds jsx elements you can conditionally assign elements or components to these variables outside the jsx and only render the variables within jsx now we use JavaScript variables to store elements right so this will also Al help us conditionally render a entire component or only a part of component while the rest of the output does not change here so this is one of the benefit also it holds js6 element inside this so this is an advantage so let’s see the syntax here we have a variable and the same IFL statement with the variables assigned to the statements so let’s see here this variable is a memory for the values or it is the value will be stored in this variables and this is the same as the condition which is to be evaluated and we have a statement so this statement is assigned to this variable whether the condition is true then this statement will be executed to the user or else the else part will be executed to the user now we will see the Practical example in the visual studio code now you can see I’m editing in the same code I’m not changing anything here I’m just eliminating the F statement from here okay and now we have import and here we are using a variable so I’m using a variable button for that I have created a button here as a login button and a log out button here as well okay now I want to import this two buttons into my user.js file so let’s do that I will import log out button here and import login button okay now here these both are the child components of greetings so I want this greeting to be imported in user.js as well so let’s do that import greeting yeah now you can see right now I want this to be returned so I will return Dev greeting is loged in okay which is equals to okay this is the state F now we are using button right so I am declaring here the button okay now let’s write the main syntax let button then I’m writing if statement if is logged in button is equal to log out button on click so we are giving a event here that is on click this dot handle log out click okay now you might think where this handle came from I’ll explain now let’s give else part also copy pasting this but here log in okay we have here handle log out and login click so we have to give here also so we are giving this dot handle loging click is equal to this dot hand login click dot bind this okay so this is the event hand law dot bind this okay and also we have to give this state handle login this dot set state so I’m setting the state here as is logged in true okay now same thing for log out button false okay now this should work you can see a login button here which didn’t have previously for a statement and you can see the changes here now I am not a user of edura then I should get this page once I log in then I should get welcome back to edura page okay so this is what the element variable statement here I am assigning the values to this button if I click the button over there then the handle login click should give me true value and log out click should give me false value okay I hope you all understood the ifls and element variables next in our list is Turner operators let’s see the conditional tary operator is the only JavaScript operator that takes three operant this operator is frequently used as a shortcut for IFL statement okay now let’s see the syntax here we have a condition over here this is the condition is to be evaluated with a question mark So this question mark means if the condition is true or false if it is true then this statement will be executed if false then this statement will be executed so here the colon is the else part is the difference between true and false part now let’s check this also in terms of practical way this is the simple way of writing any conditional rendering here we have the same thing as the element variable here we have to just change the if and you can see here I’m giving the question mark here and I’m taking off this else I’m just assigning the column yeah with only this two changes here the code will be working I’m setting this to true for changing so you can see welcome back to eding with just three changes we are getting the same output here okay see log out so I’m getting this page if I log in I should get this page okay next we have a interesting operator that is short circuit operator short circuit evaluation is a technique used to ensure that there are no side effects during the valuation of the operant in an expression The Logical and operation helps you specify that an action should be taken only on one condition otherwise it would be ignored entirely here the approach is a specific case of this jary operator that we just learned now when we want to render something or nothing then we use short circuit operator now let us see the syntax yes this is the syntax now here the expression is first evaluated from the left hand side of the operant okay and if it is true then it is evaluated see the condition is to be evaluated and this is The Logical operator and this is the expression if the condition is true then this expression will be evaluated if the condition is false you will not get any kind of output here so this is the beauty of short circuit operator then we’ll see in the practical way here I have the same code just I have taken the buttons here I don’t want that button so here I am writing the syntax return this state logged in and and operation and I’m giving the style and welcome back to edor okay yes here we have the value as true so let’s check the output yeah welcome to edua and I will change here welcome back to Eda see we come back to Ed now if I change this to false so let’s see what see there is no output so that is what I mentioned you before if the condition is true then this output will be executed if false you will return nothing so this is the end of the conditional rendering now we will learn how to prevent component from rendering in rare case you might want a component to hide itself right even though it was rendered by another component to do this return null instead of its render output so returning null from a component renders method does not affect the firing of the component life cycle method so now I’m taking you through the online compiler I’m using GS pable this is a converter of the JavaScript now here we have a function called warning banner and we have props and I returning null here okay so we are writing a warning sign um let me change here I will write danger okay you can see the Visible Changes here itself danger okay here we have a phage extension and I’m giving this true here we have handle toggle click and I am giving has hide and show now if we click on hide so the message will be here hidden from rendering now I want to show this message then we can show here from returning null if we hide then you will not get any of the output here so this is also a kind of short circut operator and but here you will not get any of the side effects by giving the return as null now we’ll talk about components in detail so first thing first that in react everything is considered as a component so I will say in react everything is a component so on the screen you can see that there are multiple components 1 2 4 3 and five and on the web browser we need to add them just like components so they have been added just like a Widgets or sections or web parts or specifically components and all these components are integrated together in react to build one react application so in react what I can say is that components lets you split the UI into you can say independent reusable pieces of code and you can think about each piece in isolation and that is where the concept of reusability comes into picture that each component can be reusable at a later point of time but conceptually components are like JavaScript functions you can say like that they accept some arbitrary inputs so the inputs to a react component is called props and the return react elements describing what should appear on the screen we can easily update or change any of these components without disturbing the rest of the application so as you can see that if I want to update or change any of the feature of this component one I can update it without disturbing the rest of the application or you can say without disturbing the other components on my application now how components are split internally so single view of UI is divided into logical pieces so on the left you can see that it’s a single view or you can say react based application but how it is divided internally into logical pieces so the concept in of component in reactjs always says that you should have a parent component and then you can have child components or sub components and it behaves like a tree so at the top you will have parent component or you can say base component and then there will be some branches or some branches beneath it so the starting components becomes the root it’s called The Root component and the rest of all other becomes you can say the branches and the sub branches so in this diagram you can see the component one is the root of the UI tree two and three are the children of one and four and five are the Sub sub branches of the second component so that is how you can split the complete UI in reactjs components now each component returns one Dom element so as I mentioned that in every component you should have a render method and a return statement so each component in reactjs it returns one Dom element and how it is returned that there is a API called react Dom and it has a method called render so react dom. render will allows you to render the different components on your application so the jsx elements must be wrapped in an enclosing tag so always please remember that if you have to embed the jsx elements inside a return statement or a render method you have to wrap it in a enclosing tag so here I am creating a es6 standard component class component 3 so 1 2 2 4 and 53 is here which is written like this that hello world welcome to edura and react dom. render I am calling the component component one because component one is my root component and where I want to show you is the ID of that div element that is document. getet element by ID content now if I talk about props and state so react components are basically controlled either by props or you can say by state so we will talk about them now but before that what are just a summary of the components that everything in react is a component each component returns a Dom object as I mentioned that component divides your UI or splits your UI into independent reusable pieces and then each independent piece is processed separately a component can be divided into a root component and into the child components and then we can further split into smaller components compon now this is very important to understand that how you render a component so when react sees an element representing a user defined component it passes the GSS attributes to this component as a single object and those are called specifically props so you see here this is a function welcome which is just like a component having some props as a parameter so we call here react. render with the welcome name welcome name let’s say name is the prop over here having the value with and react calls this welcome component with the name vipul as the prop so this becomes name equal to vipul is the props welcome is a component which returns H1 tag and then react Dom efficiently updates the Dom to match this H1 tag that is how a component is rendered in reactjs now the other fundamental the most again a very important you can say fundamental of reactjs are the props now what are props so prop helps components to converse with each other or to communicate with each other this is I can compare it with you can say arguments or parameters of a function so if in this example class body extends react. component return header and footer now in header name equal to Bob and name equal to Alex so how can I return this property to this class component by using this do props do name so what this doprs do will return this doprs do name then it comes to header it will return Bob and this. props do name for the footer component it will return me Alex so how you can access props in reactjs if you want to access props in reactjs the syntax is this doprs do name so using props we can configure the components so now I have another header and footer components and I’m passing a different value name equal to Miller and name equal to CI so in the header component if I write this this doprs do name in the previous example also I wrote this doprs do name but the value was something different and in this case the footer component will return me this doprs do the value will be Cod so Props are basically used with components they revolve around the components they help in the conversation of different components via props we can do the conversation or communication between the different components in reactjs and how to access those props the props are accessed using this doprs do name or you can say this doprs do the attribute name or attribute value so if I talk about props they work similar to HTML attributes data flows from downwards from the parent component so as we are talking about a UI tree a parent child relationship so in terms of props it’s a unidirectional flow of data props are immutable that is they are pure here we are talking about pure functions or pure components so Props are immutable so as compared to which is mutable which we’ll talk later but props please remember are immutable so they are pure in nature they can set default props so we can set some default properties around the props now let’s talk about what is pure and impure here we are talking about so whether you declare a component as a function or a class so as we talked about components can be of two types a function component or a class component but it must never modify its own props so Props are always read only they are immutable in nature so it is very well said that all react component must act like pure function with respect to their props so let’s talk about what is this pure function and what is this impure function here we are talking about so for example there is a function called sum having parameters A and B and it is returning a plus b so in this particular example this is called a pure function why they are called Pure because they are not attempting to change the input values they will always return the same result for the same input so by that what I mean is that I’m not altering the value of a or b inside the function definition that’s why this is called a pure function but when I talk about a impure function because the function is impure so it changes its own input so for this particular function the input was account and amount and you can see there that I’m changing the value of account so it becomes a impure function and that is not allowed when it comes to components and props because all react component must act like pure function so Props are read only or you can say props are immutable in nature now components and props we talked about that there are two types of components you can create in reactjs because components allow you to split the UI into independent reusable pieces and you can think about each piece in isolation they are basically just like JavaScript functions but there are two types of components which you can create based on es5 or es6 is standard so if it comes to es5 is standard you can create a functional components but the recommended way and I will recommend that you always create a class component so how you will create a function component normally just like we create a function so function welcome having some props or the parameters but if you want to create a class component so you have to use the keyword class the component name which extends from react. component and it should have always have a render method and a return statement so that is the these two are the different types of components which we can create but from a react point of view they are always equivalent these two forms of component are always equivalent now another fundamental is state but before moving to the state or you can say another fundamental let’s get deep dive into some of the examples so that the three basic fundamentals which we talked about jsx components and props you can have better understanding about these okay so let’s get started so I’m just opening the nodejs command prompt so I have opened the prompt so I’m moving to the D drive and I’m moving to a specified location and then I’m am opening the code in a editor called Visual Studio code so let’s talk about the basic example that how you can render the jsx in react JS a very basic and simple example we will talk about that how you can render jsx in reactjs okay so what we have done over here is that we have a react Library the reference of a react Library okay and then reference of a react dom. library and then reference of The BJs in the script tag I have called reactdom do render and in that react dom. render because we want to render the jsx okay and please remember that you have to use script type equal to text Babel to indicate the jsx code in JavaScript of jQuery we refer script type equal to text/javascript but when we are working with jsx you have to use script type equal to text /b to indicate the jsx code and include b. min.js this is very important and this b. min.js this is a browser script tag in react dom. render in the H1 tag so please please remember that this render method takes two parameters always the first is your jsx element and another is your placeholder okay let’s move to the another demo where we will see that how we can use the JavaScript in jsx so as we know that we can also use JavaScript in jsx it takes the angle brackets as the beginning of the HTML syntax and cly Brees as the beginning of the JavaScript syntax okay so here you can see that I have created an array name equal to some names and in the react dom. render I using a JavaScript names on the names array I using the map method which is calling on the name and on the index key that is a key value payer and in this I’m returning the key equal to index hello and the name now you see here this name is represented in the cly bra as a attribute because names if I don’t put it in the C braces will be considered as a simple text so let me save this file and run this so you see here hello Lis hello Emil and hello Kate the reason being why this output because I have written here is hello and passing the parameter as a jsx so I’m using the JavaScript in the jsx and looping around the values in an array using the map function or map method which is inbuilt method of the array collection so that is why this particular output is shown hello Ellis hello Emil and hello Kate because these are the three values which are there in my array okay now let’s move to another example again a very simple one that I have created an array having the key values as 1 and two now in the react dom. render I am calling this array now what will happen that in my output it will represent that hello world react is awesome now in the next in this example what I’m doing is I’m I am defining a component so we talked about props we talked about jsx we talked about components right so in this particular example I’m defining a component so what is a Syntax for defining the component class then the component name which extends from react. component then it creates a component class and it implements a render method please remember that the class components or the function components always should have a render method class components always implements a render method to return a component instance of the class so if I talk about before version 16 of react chairs it uses react. create class to create a component class now it has been deprecated and we are using the es6 standard okay now components can have attribute and you can use this. props do some attribute to access them just like in this case I’m using this doprs do name so what what I’m doing is that in react dom. render as I mentioned you have to call the parent component or you can have to call the root element in this case there is a component called Hello message okay now in the Hello message component I am passing a prop with the attribute name let’s say equal to name and its value is John now what will happen in the Hello message it is returning hello this doprs do name as I mentioned while talking about the props that how you can access the prop okay how you can access the prop so how you can access the prop you can access the prop is this doprs do attribute name please remember how you can access it this do props do attribute name this is very important to understand and now let’s see the output of this I’m opening it in the browser it is showing me the output hello John okay now let’s talk about this doprs doch now what is the use of this doprs doch so react uses this doprs doch to access component children notes or you can say child notes so you can see here this doprs doch so please remember that the value of this. props doch it could have three possibilities in fact so if the component has no note then the value will be undefined then the second possibility could be that if can it can have a single child node let’s say an object and if multiple General nodes then it will become an array I repeat that there are three possibilities while using this doprs doch so component can have no children node then the value will be undefined in that case if it has single children node then it will be an object and if it has multiple children nodes then it will be an array so react gives us the utility called react. this is react. this is a utility given by by react for dealing with this doprs doch data structure so we could have used react. children. map to iterate into the childrens of the component without worrying its data type being undefined or object so what I’m doing over here is that I’ve created a notes list component that is a class component so class notes list extends react. component it implements a render method and it Returns the instance of this particular class since we are accessing the children of the particular component so we can use react. children. map in this I’m calling this. crops. children and it could have three possibilities but in this case since we have a children so our output would be hello world in this case the output will be hello world in a li structure so that is how you can use or you can access the children components also of a particular component let’s move to another example so types components can have specific attributes which are called props in react and can be of

    any types it can be of any type so here you can say prop types. string. is required so what happens is that sometimes you need a way to validate the props so you don’t want users to have the freedom to input anything into your component so react has a solution for it and it is called prop type so what we are doing is that we are saying that prop types is of type string and it is required this is kind of a validation we are doing so what is done in this particular example is that the my title my title is a component has a props of title prop type tells react that the title is required it is required and its value should be of type string now if we give let’s say for example title a number value so where data equal to let’s say 1 2 3 for example okay then it will result in an error which means the props does not pass the validation and the console will show you an error message something like let’s say failed prop type so what I’m doing over here is my title I’m calling the component and there is a title where I’m passing the data and data is 1 to three okay so that is how you can Implement some kind of validations or you can apply some kind of rules where you don’t want to give the user a freedom to write anything in your component so the these are some of the basic examples we talked about for jsx for props and for components now let’s move to another set of examples so let me close this very quickly okay so these are again some of the small examples which allows you to work with jsx props and components but before starting this let me tell you one thing very quickly that as I told you that this is the nodejs website from where you can install the latest node.js version and once you install so there is a GitHub project provided by Microsoft open source project which is called create react tab so you have to write the command like this npm create npm install create react Tab and once you press the enter so a project will be created for you a complete react based project will be created for you which will allow you to have the complete solution structure in terms of index.js index.css app.js and app.css so you will have a SRC folder and a public folder so these two folders are very important and we will talk about this in detail so what happens once you create a Project based on create react App application a solution a builted solution is given to you which allows you to write the code or to test your different functionalities so it has two folders one is the public folder where we have a one HTML file called index.html where we have defined a root element in a div with the ID as root if I go to the source folder the starting file is the index.js in the index.js we have react. render now as you can see at the top that we have imported react we have imported react Dom imported the index from the solution structure now react dom. render calls the parent component which is the app app is the name of my parent component so if I go to app.js there is a parent component class app extends component you can either write component or you can also write react. component that’s not a problem at all every component as I mentioned should Implement a render method and there is a return statement which Returns the instance of that particular class now I can write the jsx inside the component in the return statement simple HTML and the JS structure the div I have given the div class name equal to app now there is a header in this header I have implemented a image with a class name app logo alt equal to logo and H1 equal to class name app title now this header tag is closed here now you see the important thing over here in the main component as I said that the basic principle of reactjs that you have to compose your or decompose your complete application into multiple subc components so at the top there will be a parent component and there will be sub branches or branches of that particular component so the first component the parent component is app inside it I have called three different components one is the demo class another is author and another is CMP style so first this demo class subcomponent will be called with this this subcomponent a prop is defined a prop or you can say parameter is defined with the value react classes the value of this particular you can say prop it will be used in the definition of the demo class component so if I go to the demo class since it’s a class component it should Implement a render method and a return statement so how you can use the props you can use the props by using this do props so that is how it is used over here this do props and what is the attribute name the attribute name is the demo class the second subcomponent which is called is the author now author again has a attribute called author name which is used in this component class author extends component render implementation and then a return statement this. props do author name which means that whatever attribute to Define over here can be used in the component by using the syntax this doprs do attribute name now the third component is a little bit different the attribute name is a student name but here what I’ve have done is that in the render method I have applied a custom CSS just to show you that how you can use the attributes within the jsx in a cly bracket so where my style some styling has been given and in the return statement style equal to my style now this my style is put in a cly bracket which becomes a jsx statement after that I have done some calculations you can see here calculation 4 – 2 equal to it is in bracket then only this value will be shown okay now to run this create react application if I go to package.json file so what is package.json so package.json you can say is the introduction of any react based application or you can say the basic information of that react based application so it gives me about the name about the version about the private dependencies and the scripts so there are some default scripts at the same time you can create some custom script of yours so there is a script called start so if I have to run this complete project or application how I have to write it so in the nodejs command prompt I have to write npm start so I have clicked enter and this will open the browser on the local host on the port number 3,000 so now you can see here the output that there was a header in the header there was a image a text and this is react classes by wej and you can see the calculation has been done because we place the attribute the complete jsx or you can say JavaScript expression in the cly bracket so this is the output of this particular code which I showed you in app.js now the beauty of this particular application is that whenever you will change the code whenever you make some changes you don’t have to run the npm start again and again the changes will be reflected on the browser instantaneously so you can say that this particular application is very much reactive in nature so whenever you change the code or update any code it will directly get reflected on the browser okay so let’s go to index.js and start making some changes in the code so I’ll start with again basic jsx elements so that you can understand how we can write jsx this is a very simple example again react dom. render H1 hello world so if I go on the screen I have not saved it if I save this file and if I go to the screen it shows me hello world I have not refreshed the screen it’s very much reactive in nature okay now let’s talk about some more examples we’ll quickly see some more examples jsx I’m just showing you as of now jsx props and components examples once this will be completed then we will talk talk about State life cycle events and the remaining concepts of reactjs so in this particular example how you can add your jsx in the previous example if you have seen that in the react dom. render I have added the complete element as the first argument for react dom. render but there is one more practice which you can follow that instead of writing the complete jsx or HTML expression in the react dom. render first parameter what you can do is that you can create a element outside the reactdom do render and then pass that element in the react dom. render method so what I’ve done is that I’ve created a dummy text and created a const element in that I have created a div structure in that div structure what I’m doing is that I’m creating a button class name equal to button the text is button and then a sample text will be displayed once this constant element or you can say AJ expression is created I can pass this to react. render like this so let’s save this file and see the output you can see the output that there is a button and some sample text shown on the screen so this is the best practice you can say to write the jsx expressions or jsx elements because your jsx elements can go bigger and bigger if it is a single line jsx expression or jsx statement you can very well write it in react. render but if it is very big or going to become very very big then you can put it outside react dom. render in a constant element and then you can pass the react dom. render that element just like shown on the screen now we will see the example how you can render the elements using jsx now how you can render the elements using jsx now in this particular example please remember that every react application it should start from react. render so how the data flow goes It goes from react dom. render so first we will see what is passed over here the element which is passed is const element now in this const element what we are passing is in H1 hello format name and we have passed props as user now what is format name you can see that format name is used as a function component the parameter passed is user and for this user the properties using the arrow function here the arrow function is used the properties for this user user. first name and user. last name is used as in the arrow function which are passed to this particular function as the properties so return user. first name and return user. last name and in the react dom. render I’m calling this element so let’s save this file and what output it will give me it will give me the hello user hello format name format name is calling a user so user is whle Jen so hello vle Jen because whle is the first name and Jen is the last name so let’s close this quickly now let’s talk about some other example that how you can render the elements in reactjs now we’ll start with reactdom do render in reactdom do render there is a parent component which is clock now what is happening in this clock is that this clock is declared as you can say class component so class clock extends react. component a Constructor a super is defined and we are setting the state this do state please remember state is always set the initial state is always set by using this do state and in this do state we are passing date as a new date in the component did Mount and component will Mount we’ll talk about this later because these are life cycle methods in this just we are calling different different methods and we are setting the state in the tick method tick function we are setting this with the date new now what will happen that in the render method there is a H1 hello whle and in the H2 how we set the state please remember that we set the props using this. props do attribute attribute name and this likewise we set the state this. state. attribute so here what I’m doing this do set state. date. to local string which will show me the current date or time so hello whle it is 10:36 p.m. that is how we can set the initial State and final state in reactjs now components and props now let’s talk about what are the components and props so we already saw that in react n. render we can pass the element but in the element again instead of passing the complete jsx statement we can pass it as a component so you can see over here const element in the previous example I showed you that in the element there was a jsx expression having some div some P tag some H1 tag but in this particular example I’m passing a component to the constant element the component name is welcome having some attribute called last name now in the definition of this particular component which is function welcome I’m returning H1 hello props do last name now what is last name gen so let’s save this and let’s check the output you can see here hello last name this is my last name that is how you can render the components and props in reactjs it’s very simple very straight forward in nature now this is just an interesting one having some null value so how you can conditionally render a react component this is very important to understand that in element I have a component called message having attribute message having the value as null now in the react. render I’m passing this element and calling the message component so let’s save this file and see the output so there is no output you can see on the screen because I’m passing a null value so you can also conditionally render a react component so let’s move to another example that how you can style the react component very very important to understand that how you can do The Styling in the react component because please remember just like in Native JavaScript and jQuery we ed class class equal to some name to let’s say style any tag or component in JavaScript of jQuery but in react we use the class name this is a keyword so instead of class class we use class name so this class name I have defined in index.css so if I save this and see so you see here this is the CSS which is defined and the text rendered is Whipple box because the text is given over here is Whipple boox so this is a box small you can say a class which is defined so if I go to in index.css this is the Box small class which is defined so defining the class in CSS it’s pretty same by the dot by the dot operator you have to define the class but for calling that class instead of class keyword you have to use the class name keyword this is very very important to understand in reactjs now I will show you a very good example of reactjs that how you can Implement a multiple choice question kind of functionality in reactjs very important to understand so let me close this so for stopping this npm start you can press contrl C on your keyboard it will ask that you want to terminate the bad job you can press yes and then press enter I’m just opening another example let’s close everything just open this in Visual Studio code a very good example we will see that again the same example uh index.js I have app.js defined and index.js in index.js I’m calling react. render in this the parent component will be called the parent component is app and here in app.js this parent component is written as a function component you can see here that it is written as a function component right so let’s run this code first of all to see it running so for running any react base create create react App application you have to use the command npm start so I have just entered the command npm start and pressed enter so it will open up in the browser so meanwhile we will see the code what is written in this function component in app.js so in index.js I have written react. render this is the parent component and document. getet element by ID where I want to display or render the output okay so let’s go to app.js so in this app.js since this is a function component I have a return statement over here in this return statement I have written some basic HTML so header tag is there so in this header tag what I’ve have done is that specified the class name because you have to specify it with the class name some image will be there and then in the anchor tag I have returned some static text so it’s running as of now it’s starting the server npm server no problem we’ll move to the code again okay now in this particular example what I want to show you is a multiple choice kind of functionality multiple choice question quiz you can say so let me just do the uncommenting and let me comment this react dom. render else there will be multiple reang dom. render I don’t want that okay so so this is the application which we want to create now the question here is that how we can create this type of application now this is a multiple choice question application which is created in reactjs now as you can see this is the output which I’m showing you now as you can see on the screen that there is a section called correct and incorrect so this is my score area you can say that this is called a score area below is is my question area now these are the two high level areas or components I have talked about but at the same time I can split this complete UI into sub components so when I say this is the score area okay or let’s say the outer complete boundary is the quiz then I have a score area in this score area I have two subcomponents the correct answer and the incorrect answer and in the question area I can have two subcomponents the question and the choices so if you see it it ask me that what is 8 into 1 if I click on 8 see the answers goes is correct and the state is changed to correct equal to 1 right so I just want to show you in this particular example that how you can decompose your UI or decompose your react application into subcomponents or you can say you can create a parent child kind of hierarchy although some advanced concepts are used to build this particular application which I’m not going to tell you as of now but I just want to show you that how you can decompose an application if it is given as a requirement or problem to you then how you can decompose it into different components so let’s go back to the code and let’s directly go to react. render now in this react. render the first component or you can say the root or the parent component which is called is the quiz component now let’s go to the quiz component where is the quiz component so this is the quiz component now this is a class-based quiz component following the es6 standard class quiz extends react. component having a Constructor super and a data set is defined with the correct answer now once this data set is defined okay now we are setting the state initial state that is this dot State and binding some click events or you can say functions to it but the most important part is the render method or which implements this component implements a render method so in this render method method in the return statement I have two subcomponents which I was telling you about that this particular quiz can be divided into sub components two subcomponents one is the quiz area and another is the score area so you can see here one is the score area which will have the correct answers and the incorrect answers and another is the quiz area now if I go to let’s say the score area score area component so if I go to let me show you the score area component this is the score area component as I told you that this again score area component can be divided into two subcomponents one is for the correct answers and one is for the incorrect answers so you can see over here that there are two other sub components total correct and total incorrect right so these are the two subc components which are called in the score area component at the top now if I show you the other one which is the question area so in the main one we have the quiz area in the quiz area I can have two subcomponents one is the question and one is the answer list so you can see this is my question and this is the complete answer list so if I say this question and if I click on let’s say wrong answer so it becomes a incorrect answer right so that is how you can divide a react application or decompose a react applications into components or subcomponents so in this particular example let me repeat one again very quickly that this particular application divided into two main components that is the question and the score area again the score area is divided into the correct answer and the incorrect answer those can be considered as two subcomponents of the score area component and then this quiz area is divided into the question and the answer list so you can see over here that this quiz area is divided into question subcomponent and the answer answer list subcomponent so these are the three important aspects and then we’ll move forward to the other reactjs fundamental which starts with States okay so till now we talked about the fundamentals of reactjs wherein we talked about es5 and es6 refactoring we talked about what are the advantages of reactjs and we also talk about some of the fundamentals like jsx components and props so we talked about these in detail that what are the various types of components we can create we can create functional components and we can create class components but going forward please remember that es6 standard says that you have to create class components only because now we are going to talk about States so what are states in reactjs so just like we have props we talked about props in reactjs which is used for data management in reactjs so in addition to props react component have another way of holding the data and which is called a state so what is the state so components can change so to keep track of the various changes or the updates happening in the component over the time we use the concept of state so in this example as you can see let’s say there is ice State changes event has happened on this particular eyes and because of this change of event State changes so what is the state or the event which is changed over here let’s say we have increased the temperature and because of this increase in temperature the ice has been converted to water so what we can say is that the previous state of this particular object was ice and when some event has happened on a component which is in this case is increase in temperature the final state has become water so for State we can say that unlike props component states are mutable because in props we talked about that react props are immutable in nature which means they talk about pure functions or they talk about that you cannot change the value of the props inside a component but unlike props the component states are mutable so as I mentioned that react components have another way to hold the data and which is called State now objects which control the components rendering and behavior so states are the one which handle or control the components rendering and behavior and you can say this is the core of any react component as you can see on the screen that component is Central to any tree and around it revolves the props and the state but the important thing is that estate should be kept simple as much as possible because we know what are props how can you compare the props and state so Props are the values which is passed in by a component parent so you can see here that the props these are the value passed in by a component parent so this value is passed to another component as a prop and the value is again passed to another compon component as a prop its state is local mutable data that can be created and modified within the component this is the definition of State you can say so state is local it should be very simple in nature and mutable data which can be created and modified within the component now what is the use of having the local data or you can say local state having local data that can change within a component increases complexity and limits the composability of the component so when we talk about props we have local data which flows from one component to another component but the problem with this is that it can change within the component and can increase the complexity and also limits the composability of any component so when we talk about state in reactjs please remember that to use state in reactjs you have to use a class component there will be no more function components in our projects if you want to use a state and in the class Constructor since we are talking about class components so there will be a default Constructor over there we will initialize the component state to a sensible default value so just to repeat once again what is a state state is just another way of holding the data in reactjs now this is something very important that components in reactjs can be in two forms you can create again two types of component one is stateless component and another is State full component now what is the difference between these two state less and state full because we talked about components components can be created by two ways now when I say State less stateless means it does not remember anything it does it does not keep track of any state and what is a stateful it remembers everything it does it keeps track of every change on an event or any update in the event now let’s talk about stateless and stateful first of all what is a stateless so as we talked about stateless means it does not remember anything it does and stateful is it remembers everything it does which means if there is any change in the state it keeps track of that particular thing or particular change or particular update because of an event now stateless it calculates the state internal state of components and what is a stateful it is the core or heart of reactjs you can say which is stores the information about the component state in memory the stateless components they never change the state but stateful components as I talked about that they can change the state because there will be a initial State and there will be a final state so they can change the states the stateless components they contains no knowledge of the past so for example if there was initial state which you have set using this do state and you want to change or update that state using this do set state but stateless components they don’t contain any knowledge of the past events only the the current and possible future State changes can be tracked and stateless components when we talk about stateful they have knowledge of the past current and possible future State changes values so that’s why they are called stateful because they keep track of the previous state also stateless components you can say they provide referential transparency that is for small inputs it will produce the same output so if you give different different inputs small small inputs same inputs you can get the same output in stateful component it receives information from the stateless components if State changes required so these are some of the basic differences between a stateless and a stateful component now this is just again a summary for this stateless and stateful reactjs components so as we talked about what is a stateless so all function-based components can be considered as stateless reactjs component but here we are talking about that when we are talking about state in detail we’ll talk about State and we’ll see many examples so we will talk about only class based components and not the function based components so that’s why we are saying over here that function based components can be considered as stateless reactjs components so stateless reactjs components so which means they are pure JavaScript functions so we don’t need to have state over there in stateless reactjs components but as per the future Trend and the latest Technologies we are using stateful reactjs components which keep track of your previous state your current state and probably all the future States so all class-based components can be considered as stateful reactjs components and stateful react J components inherits from a particular class called react. component so estate also getting inherited from parent to the child so this was the brief about the state and what are the different types of component based on the stateless component and the stateful component in react JS before going to the demo I will talk about something called set state so as we are saying that there are stateful reactjs components what does it mean so you have to set your initial State and then you will set the final state so that is the you can say current state and the future state so there is a method called set State now what does it do so you can set the initial state by using this do state but if you want to set the future state or you want to update the state you have to use a method called this do set State Now set State method it merges the new state with the old state so for example your new state value is one and the previous state value was zero or maybe false and true the latest value will become the combination of the new state with the old state so all the previous state will remain unless it is overwritten so if you are not overriding or overwriting the previous state it will remain in the memory so for example consider a state object with properties A and B having values for example 1 and two so a is equal to 1 and B equal to 2 respectively now calling set State what will happen so calling set state with the property Bal 3 and C = 4 so it will produce a new object where B will become three and C is equal to 4 but the previous value of B was two so that is how the property of a remains unchanged the property B in this case is overwritten by the new state and in this object of the State Property C is newly added so in addition to changing the state of the component set State please remember set State method is very important it also causes the component to be rendered eventually and for performance reason you can say set State calls a batch method and there is no guarantee that the state can change immediately so by this we mean that there is a method called set state by which we can set the final state of any react JS component a class component now let’s move to some demo that how we can implement this kind of functionality so let’s see this so this is your index.html a simple HTML file where I am calling a script called like button.js by using the script tag and in this like button.js script I’m using the class component and the concept of state so this is my first example or you can say first demo a very simple one to uh let you understand that how we can work with reactjs State feature or you can say aspect because react thinks of a component as State machine and you can use this. state to hold the component state so let’s write this code what I want to do is that in react. render I’m calling a component let’s say called app now I will go to app.js where I would be writing this component so this is a function component I don’t want any function component anymore I’m just commenting it and I have commented this and I’m also commenting this now what I’m going to do is that I’m going to write a component with the name let’s say app how I will write it I will write class app it will extends from a parent class called react. component and in this react. component you have to specify a Constructor which will have the parameter as props and in this Constructor you have to call Super which will return again the props to the class instance and then you have to set the initial State this is very important that how you can set the initial state by using this dot State this is the initial state which I’m setting over here and this do state I’m setting is let’s say for example light is my property and initial value is false and then you have uh event for example uh this dot handle click is equal to I’m binding this event to the class this dot handle click do bind to this that’s it so we have set the initial State and what we have done is that we have binded a event handler to this particular class now we already know that every class component will have a render method so we will implement the render method over here now in this render method what I’m going to do is that I will have a return statement so before that I’m just writing a uh variable called where text where I’m checking the state so this do state do like I will check this using a tary operator if it is true then it will show me like else it will show me that I have not liked it that’s it I just created a variable and then I will have a return statement now what I’m going to to write in this return statement I’m just writing a simple jsx over here a very simple jsx I’m going to write a P tag I’m just passing this text as an attribute in the parenthesis I’m just writing a demi text now what we are going to do is that we have method handle click which we are going to Define now so handle click based on a event and in this event what I’m saying is that I’m going to set the state now so in this particular example what you have seen is that I have created a class component which extends from react. component it should have this dot State reason being I’m setting the initial state it has a onclick event you can say which is binded to this particular class then there will be a render method which is required in this render method there will be a return statement and in this return statement I am checking the on click so on click event I’m checking over here and what I will call I will call this dot my event name what is my event name handle click now on the click of the let’s say P tag what I want to call I want to call this handle click so in this handle click what I’m going to do is that I’m going to set the state because my initial state is liked equal to false now I want to set the final State now final state is set by as I mentioned this do set state now let’s define the property over here what was our property the property name is light and what I want to Define is this dot state. like value that’s it so what’s going to happen is that I have mentioned the not so it will automatically become true because initial value like value is false so this completes my code over here let me repeat once again I’m using the create react App application in this create react App application we can change maybe the component name also so this component name needs to be called in index.js and just save it so what we are doing over here is that in the react dom. render I’m calling a component this component is defined in your app.js now in this app.js what I’m doing is that this is the like button now like button is a class based component you can see here that it is defined as class now let’s define this export default like button and this is used over here in index.js like button correct now what will happen that you have set the initial State using this do state equal to like false and in the handle click whenever that P tag on click event will be called this handle click event will be called which will set the final state of this particular P tag so what we are saying is that my initial state is false and whenever a button Buton or any control will be clicked I am changing it to true so I am changing the state of that particular control now let’s see the output of this particular application what I’m going to do is that I’m opening it in the browser now you can see that this is a static text and when I’m clicking this particular uh button like it is saying me the message that you like this just like we wrote over here you like this so it is showing me the message that you like this so that is how you can set the initial State and final state of any react component now just to repeat once again that what we are saying is that for setting the initial State you have to use this dot State and for setting the final State you have to use this do set State method just as you can see on the screen okay now we are talking about State here let me tell you that state is similar to props but only thing is that it is mutable and and fully controlled by the component because what is happening that right now we are storing our all the data in an array in a variable for example but that is a good way to start with reactjs but later on if you want some more operations or more frequent flow of data in reactjs you can think of a state so you can think of a state as any data that should be saved and modified without necessarily being added to a database so you can say state is a place from where the data comes from and we should always try to make our state as simple as possible and minimize the number of stateful components so for example if we have let’s say 10 components that need data from the state so we should create one container component that will keep the state for all of them we should not create 10 components we should create one component as a parent component and then the other could be the child components okay now let’s see more examples based on the state so what I’m going to do is I will create more State examples or state demos to show you the concept of State in detail I’m going to create a class component so class app which extends from react. component I’m using a create react app getup project Facebook project you can say and in the react dom. render I have to call this app component so let’s call first this in index.js this particular component app and then in app.js what I’m going to do is that I’m going to create a class component with the name app so first thing first first we have to create the Constructor which is passing the props and then in Constructor what you are going to do you are going to set the super keyword this is the first and most important thing to do in the Constructor and then what we are going to do in the Constructor as I mentioned that the best place to set your initial state in reactjs is is the Constructor okay so I’m going to write this dot state I’m setting the initial State over here please remember that if you have to set the initial State you have to do it with this do state in this do state you can Define n number of properties any properties you want you can Define in this so let’s define over here for example two properties one property I have let’s say for example header this is just a property I can write it text for it let’s say header from State any text you can write this is just setting the initial State and then I have one more property let’s say for example content this is my second property in my initial State and any text I can write which I can write as content from state so what I have done is that I have set the initial state with the two properties header and content this we are creating a class component now every class component you already know it should Implement a method which is called render and every render statement should have a return state so I’m saying render and then I’m saying return in this return what I’m going to do is that I’m going to Define my some custom you can say jsx so let’s define in return so for example I have a Dev I want to write a Dev in this Dev I have H1 tag in this H1 tag I will Define my one property called header and and then again I have a h2 tag where I will Define another property called content so let’s save this file now how you set the state now even you can set the state in jsx so just like this if you want to set the state in jsx you have to place this cly braces and what will be the state you want to become so it should become this do state DOT value is header because header is a property which we have already defined and here I want to say this do state dot for example content in the previous example you might remember that I used this do props do attribute name similarly in state also while using the state we can use for setting the value or showing the value passing the value to the component by using this do state so here I have two properties header and content so I can use it like this. state. header and this. state. content so let see the output of this particular example for this example what we can do is that here I am defining a div and in this div what I’m doing is that I’m doing class component or you can say creating a class component and in this what we have done in index.js that in index.js I have called this component this is my component which is a class based component please remember that while using the state always you have to create a class component and and just like we use props in this doprs do attribute name the same way you can use State just like this do state do your attribute name in this case your attribute name was header and content now let’s move to another example where we can see that how you can use State and props in one single example it’s not always the case that you have to use only state it’s not necessary you can use State and props together also so we will create this example only or we can extend this example only so what we are going to do is that I have a return statement over here where I’m writing let’s say two more subcomponents what I’m going to do is that in this div I have a div over here I’m going to Define two more sub components so my parent component will be app and then I have two subcomponents for example let’s say header and the content so instead of this H1 tag and h2 tag which I have cre created what we can do what I’m saying is that when you create a parent component so parent component will remain the same that is app I can have some child components also where I can pass the attributes or the values as props which will Define that you can use props and you can use at the same time state in one example so let’s do that so what I’m going to do is that I’m going to create two sub you can say components so let’s say one name is header this this is my one of the component and this is the prop value the attribute which I can pass like this dot state do header and then I can close this component and another component I can create is let’s say component name will be content and I have a prop I can pass it as a prop and then I can write here this dot state do content what is the change we have done over here what we have done is that we have created a class component that will be the parent component in the render method in the return statement it has two child components so we have to Define these child components now so what we are going to do is that we are going to Define these two components now so let’s define these so what I’m going to write is that I’m going to write class my component subc component name is header again it will be a class component so it is going to extends from react. component and the same component I have to create for Content so this content component needs to be defined so I have two subcomponents now one subcomponent is the header which is having the prop value as this. state. header and another prop value as this.state do content so let’s define this every component should implement a method called render in render there needs to be a return statement now in this return statement just like we Define H1 tag I’m going to Define this in a Dev here so I will say Dev and then I will say H1 now in this H1 what I want to pass is although the value is coming from a state but the value which I want to pass over here is in the form of a prop so what I want is that I will say this Dot props dot in the header props what is the name of the prop it’s header header prop similarly what we are going to do is that in the content sub component again we will have a render method and then there will be a return statement in this return statement what I want is that I want to define a h2 tag let’s take it in a container that container is let’s say Dev I want to take it in container and in this H2 I want to pass the props so what is the name of the prop attribute that is content prop so what I will say this do props dot content prop okay so what we have done over here is that in the previous example if you remember that what we did was that we didn’t Define two subcomponents okay so in place of this let me copy this somewhere and then can show you so in place of this earlier what we did we didn’t Define the two subc components what we defined was a container which was a div and in this div we had one H1 tag in this H1 tag what we were defining we were directly using the state value how we were using state. header and then in a h2 tag what we were doing we were using the content value so we were saying this.state do content now let’s see the output of this particular example first what we have implemented without using the props so let’s save this file and let’s go to the browser so now what it is saying that header from State and content from State I have already run the npm start command for this create react application so you can see the output in local host on the port 3,000 header from State and content from State why this output is coming because the header value is header from State and content value is content from State this was the direct way without using the props how we have used the props by using the sub component concept so let’s implement this subc component yeah now what we are doing is that we have defined two subcomponents which is header and content these are the two subc components class based components and we have passed the value as props now you can see this. state. header header value will come and let’s say we can write some updated value new header from State and new container from state for example and you can see the value over here new header from State and new container from State this is the output basically what we have done here is that I have showed you both the ways of using the state in reactjs which means that you can use it without props and you can use it with props also so there are you can say two ways of using state in reactjs but I will prefer I will recommend that you can use state with props and if whenever required or whenever you can say apply the props Just go with it it’s not always necessary that you have to implement every time only with the state you can very well use props and state together in the same application now just a few tips of using State and reactjs just a couple of tips from my side that do not modify the state directly don’t even try to modify the state directly you always use the set State method and the only place where you can assign this do state is the Constructor these are the two main things so what I’m saying over here is that if you have to specify this do state where you can specify this do state you can specify this do state in the Constructor only this is the first you can say right way to use the state now what is the other thing that State updates may be asynchronous in nature so react May batch multiple set State calls into a single update for performance because this. props as we use here this. State and here we use this. props so this dot props and this do state may be updated sometimes asynchronously so you should not rely on their value for calculating the next state so if you want to set the value of the next state don’t rely on the value of this do props or this do state and the third thing which I want to tell you about state is that State updates are merged when you call set state so what happens is that react merges the object you provide into the current state so these are some of the tips you can say from my side for using State and reactjs so let’s come back to this PPT and let’s talk about the another aspect of reactjs which is life cycle now what is life cycle in reactjs or what is the use of adding life cycle method to a class component in reactjs react provides various methods which notifies when certain stage of life cycle occurs called life cycle methods so there are many methods in uh reactjs which notifies when any stage of a life cycle occurs now what are the different phases of that life cycle so it start with initial phase then it comes to updating phase and then props change phase and finally the unmounting phase where you can can free out some of the resources so what we are saying is that there are four phases in which you can Define the life cycle of a particular reactjs application so what happens is that it’s very important in the application with many components let’s say there are 10 components in a reactjs application it becomes very important to free up the resources taken by the components when they are destroyed so for example a component is destroyed so it becomes very crucial very important to free up the resources which are taken by that component because once it is destroyed so the resources which has it consumed should get freed so that’s why we can declare some special methods over the component itself or you can say we can decare some special methods on the component class to run some code when a component mounts or when a component Dismount so these methods are basically called the life cycle methods Let me Give an example comp component did Mount this is a life cycle method example it runs after the component output has been rendered to the Dom so let’s talk about these different different life cycle methods in detail now so the first phase in the life cycle of any reactjs application is the initial phase now what are the different methods available out here because in this phase component is about to make its way towards the DOR it has not yet reached the DOR it is just creating its way or about to make its way to the dwn this phase you can say consist of the following methods which are invoked in a predefined order so the first method is get default props get the initial State component will Mount render method we talk about and the component did Mount and as I mentioned that component did mounted method runs after the component output has been rendered to the Dom so different methods they have their different you can say usage in any life cycle of a reactjs application now if I talk about the second phase that is you can say the updating phase when it phase comes into picture so once the component is added to the D because in the previous phase that was the initial phase so we what we said that we talked about that the component is making its way or it’s on its way towards the Dom but now since it has reached the Dom it is added to the Dom they can update and render only when a state change occurs so basically in the updating phase once the component is added to the Dom they can update and rerender only when a state change occurs so this phase consist of the methods for example should component update component will update render and component did update so please remember render is a common method in almost all the phases or the life cycle of a reactjs application so we have talked about here the initial phase we have talked about the updating phase so please remember that neither parent nor the child components can know if a certain component is stateful or stateless and they should not care whether it is defined as a function or a class but the most important thing is that when we are dealing with State our component should be of a class type it should not be of a function type so that is why you can say state is often called as local or encapsulated so it is not accessible to any component other than the one that owns and sets it a component may choose to pass a state down as props to its child components just now we saw the example of the state and props now let’s talk about the third phase that is props change phase so we talked about the initial phase we talked about the updating phase now what happens that after the component has been rendered into the Dom so in the initial phase what it was doing it was making its way towards the Dom in the initial phase in the updating phase what it was doing that it has been rendered on the Dom the component has been rendered on the D now the third phase is props change phase after the component has been rendered into the Dom the only other time the component will update apart from the state change is its props value changes so please remember that through State we can change the value or through props also we can change the value just like we saw that this do props do attribute name for example this doprs do name just like that we can say that this do state. attribute value just like we saw in the previous example so what we are saying over here is that this do props do attribute name can change can make the changes in the component and this. state can also make the changes in the component now what are the various methods which get invoked in this particular phase in a predefined order component will receive props should component update component will update and component did update of course render is a common method in every phase of the life cycle of a react application last phase in the life cycle of a react application is the unmounting phase this is the last phase of the component life cycle in which the component is destroyed and removed from the Dom this is called unmounting so we were talking about the mounting and the unmounting mounting means when the component is added to the Dom and unmounting means when the component is removed completely from the Dom and this phase only consist of one method no render method over here the only method which is there in the unmounting phase of a reactjs application is component will unmount now let’s see how the life cycle goes in a reactjs application so we talked about the initial phase we talked about the updating phase we talked about the props change phase and then we talked about the unmounting phase so these are some of the methods which are mentioned over here so it started with the initial phase where we had the method called get default props then get initial state will be called component will Mount will be called and then render will be called and then component de amount will be called as I mentioned that all these methods always called are called in a predefined order so please remember that if you write a method let’s say for example get default props and component will Mount so you should understand that in which order it will be called so first of all get default props will be called and then component will Mount will be called now you can see on the screen that once this initial phase is done what we have the other phase that the props can change the state phase and then we have the update phase we are different methods could be called so what are the different methods that component will receive props should component update component will update render and component did update so these are the different methods in the update phase now if I talk about the last phase which is the unmounting phase so what happens that reactdom do unmount we call the component will unmount method for the unmounting phase for completely removing the component from the Dom that is the last phase or there is one method which is called over there which is the component will unmount once the component is completely unmounted or destroyed from the domor again the life cycle start from react dom. render and again the get default props methods is called so that is how this complete life cycle again goes on and on now this is the description of these life cycle methods which we talked about so so we talked about component will Mount component did Mount and so on so what happens with component will Mount is that it is fired once before initial rendering offers and it is a very good place to wire up your message listeners please remember that this do set state does not work here the other method in the life cycle is component did amount it is again only fired once in any reactjs application after initial rendering occurs it can use this. getd node so what is happening over here is that component will Mount will always be called before the rendering occurs and component did Mount is fired after the initial rendering workers so there is you can see very a minute difference between component will Mount and component did Mount will means uncertainty so it is going to render or the initial rendering has started but it has not been yet rendered on the Dom and component did Mount means it has rendered on the browser or on the Dom it will be fired once the initial rendering on the Dom occurs the third method is component will update it is fired after the component updates are made to the Dom you can use this.g Dom node for updates over here the other method is component did update now what happens with this method is that it invoke immediately after the component updates are flushed to the Dom so any change any update is there in the component it gets flushed to the Dom then you can call component did update and this method is not called for the initial rendering please remember this is very important that for initial rendering of the reactjs component component de update method is not used you can use this as an opportunity to operate on the Dom when the component has been updated so for example it has been updated using the props or using the state then only you can use component did update component will unmount we already talked about this that this is a single method which is called in the unmounting phase of the life cycle of a reactjs application it is fired immediately before a component is unmounted from the Dom and it’s a very good place to remove message listeners or you can say General cleanup or Garbage Collection kind of activities you can do in component unmount method another is component will receive props it is fired when a component is receiving the new props you might want to use this. set State depending on the props just like we saw that we can use both props and state in a single application the other is that should component update now this is pretty interesting that this is fired before rendering when new props or state are received received it will return false if you know an update is not needed so you can check on any of the component based on the state and the props that if any update is required or not and accordingly you can return false and true based on this method which is should component update now this is very much interesting Constructor we talked about Constructor that whenever we are using the class component in react JS you have to use the Constructor you have to pass the props and then you have to use a super keyword now what what is this Constructor in props that if you don’t initialize the state and you don’t bind the methods you don’t need to implement a Constructor for your react component and ultimately we already talked about this will be converted into function based component but here we are talking about state so our focus is for class components please remember if you are not binding anything in your component if you are not using any state then you don’t need a Constructor in your class the Constructor for a react component is called before it is mounted when implementing the Constructor for a react component subclass you should call the super keyword before any other statement because if you will not call the super what will happen that this props will become undefined in the Constructor which can lead to errors or exceptions or bugs in your application so that is why it is said that the super keyword should be called before any statement in your reactjs application so first you have to call the Constructor and then you have to call the super keyword so that this do props should not become undefined so what we are saying is that typically in react class based react component you can say Constructors are only used for two purposes specifically it is used for you can say initializing the local state or you can say initializing the initial state by assigning an object to this dot State and then what we are saying is that for binding the various events or binding the event handler methods to an instance of the class you need the Constructor please remember these are the two basic purpose of using Constructor so if you want to set the initial state that will be done in the Constructor if you want to you can say bind even Handler methods to the class instance that will be done in the Constructor of the class now this is just uh you can say pictorial representation of the different phases now if I talk about the life cycle of any react application it revolves around the three important phases mounting updating and unmounting so what we are saying that first you add the component to the Dom you do some changes or updates and then finally you unmount it so what are the different methods which are shown on the screen you can see that what are the different methods we generally use while mounting updating and unmounting so in the mounting we place the Constructor we can call the method called component did Mount and then when it comes to updating phase we can use three different types of methods new props for get derived state from props or should comp update we can use this. set State and we can use dis. force update and the different methods which we can use in the updating phases component did update and finally in the unmounting phase there is only one method which we can use which is component will unmount so this is just a representation you can say summarized way of representation of the life cycle of a react component so we talked about till here jsx we talked about components props States and life cycle now another important aspect you can say a very important fundamental of reactjs is events so what are events events are the you can say triggered reactions to specific actions so for example we can have onclick event we can have Mouse click we can have Mouse hover key press all these are called events and react CHS so for example there is an action so some action happened on the react component and then we have a react application which is called event now some event has happened on the react component and it becomes a reaction so that is a definition of events now first we talk about that how the concept of event work in other uis as compared to reactjs and then we will talk about that how events work in react GS let’s say I have a control let’s say three controls or many controls button type control now what happens that in other uis on every control you have to implement a event listener as a corresponding event handler this is very much required which decreases the performance of the application on the Dom because what is happening over here is that for different controls just like

    shown over here that you have a different controls different buttons or maybe another controls you have to implement the event listener on every control and when a event listener is implemented a corresponding event handler will be required so that is how the different uis or other uis work when it comes to events now let’s talk about events in react how react manages events in react so what happens is that if you have different controls then you will have only one event listener and one event handler attached to it so which increases ultimately the performance of reactjs application please remember that react events are named using camel casing rather than uh lower case so you have to Define events or you can handle the events with camel case only and with jsx you can pass a function as the event handler rather than a string so we will see that in the demo so before moving to reps now the other fundamental of reactjs let’s see some of the demo of handling events in reactjs so for that I’m going to show you a example we have talked about State we have talked about props and jsx and all that stuff so this is just uh you can say playground which I generally use to work with reactj which is called pen.io so in this particular example what I’ve done is that I’m using a conditional rendering based on my click or you can say based on my event so we’ll start from react doom. render so this is the react doom. render which is calling a parent component which is login control now if I go to login control which is a component now in the login control it is a class based component which is extending from react. component now every class component if it is binding something or setting the state it should have a Constructor it should have a super keyword so that this do prop should not become undefined now here you can see that I have defined two event handlers for binding in the Constructor of the class one is handle login click and handle logout click I’m binding it over there and setting the initial state that is logged in is false so initial state is is logged in is false that the user is not logged in as of now now that is why you can see that it is saying in the output that please sign up and showing me the button of login what is happening in handle login click and handle log out click we’ll see later first we will see the render render method implementation in the render method I have declared a constant is logged in equal to this do state do is logged in now what will be the value in this because it is initially set to true you can see here initially set to it is false and then in the events what I’m doing is I’m setting it true or false so first of all it will take the initial value I’m taking a let button and if is logged in if it is true then this button will be called where I’m calling a component called logout button and if it is false then I’m calling another component which is again login button if it is true then log out button if it is false it is login button now you see over here on click this is called event in react js on click is a event this event l listener is bounded to a event handler so this is binded to a event handler which is handle logout click and this is on click event is binded to a event handler which is called handle login click so we’ll see what is happening in handle login click and handle logout click in handle login click we are setting the state and we are setting it to true and in the handle log out again the user will be logged out so we are saying that is loged in is false so let’s see the implementation so what is happening that if I click on login it is showing me the message welcome back you can see on the screen so function user greeting is called welcome back and when I’m clicking on the button again log out it is saying me please sign in you can see over here please sign up so what is happening is that in the login button and log out button so I have two function components login button and log out button so what I’m doing is that I’m again calling the event that is on click equal to props do on click and in the greeting method what I’m checking is that if it is logged in then it will return another component user greeting which is again a function component and then if it is logged out then it will say guest greeting again which is a function component so that is how you can use events in reactjs now let’s see another example of using events in reactjs so what we can do is that we have to start from react. render in the react dom. render what we are doing that we are calling a component which is tole so this will become my parent component now in this strle what I’m doing is that I’m writing the Constructor that is very much required for a class component because I’m setting the state then there is a super keyword in the this. state I’m defining a property is loged down true so is toggle on is tole on property is always true and I’m binding a event this do hand click so this. handle click. bind to this particular class and in this handle click event what I’m doing is because I have used a button on the button I calling an event now what is the event onclick on click event what I’m doing this do handle click and in this what I’m saying is does this do state. Isle on what will be the text of the button so when I will click if it is true it will be on if it is false the text will be off so let’s see the output if I click on this button the text becomes off if I again click on it the text becomes on so this is just a text of the particular button which we are changing based on the state so this. state do Isle on so what we have done is that we have set the initial State first of all initial state is true so whenever it will be true this do state. is struggle on whenever it will be true the text shown is on once I click on it now the this do state. is struggle on becomes false and whenever it becomes false the text is shown as off so that is how we can work with the basic all the fundamentals we can apply in one application it’s not like that in reactjs that you have to come up with only jsx based application or component based application it’s not like that all the react fundamentals which we talked about over here should be used every time in combination then only you can learn reactjs in detail so what I’m saying is that you can apply jsx components props State and then life cycle methods and some kind of events for example onclick events just we saw all these things you can combine in one react application so let’s see more examples of events so what I’m doing here is let me remove everything from here okay so let’s create a parent component app for a very simple example of the events so what I’m writing over here is that class app extend re. component I have to define a Constructor The Constructor I have to Define props I have to use the super keyword so that this do props does not become undefined so what I want to do is that I want to set the initial state with this do state and then I want to use I can use here this Dot update State also so update state will be my Handler and I can Define the update state so what I’m doing is that this dot update state do bind and I want to bind this to this particular class uh let’s remove all this okay so let me copy this particular toggle example from here what I want to do is so in this particular index.js let me Define this toggle so what we have done is that we have defined the same component toggle over here and in this toggle what we have done is that we have implemented a Constructor as I told you okay and then in the Constructor what we have done that we have binded a event and initial value of the toggle is true and then the final value on the click of the you can say button I’m setting the state as this do set state where I’m changing the value called is stral on from True to false now let’s talk about child events what is the concept of child event in reactjs so when we need to update the state of the parent component from its child so generally what we have learned till here is that you can update the child even from the parent but there could be some situ situations when you need to update the state of the parent component from below that is from the child so we can create a event handler for example let’s say update state in the parent component and you can pass it as a prop to the child component where we can just call it so let’s do that so what I’m going to do is let’s index.js go back to index.js and let’s define a component with the name called app and in the app.js what I’m going to do is that I’m going to define a class component with the name app which extends from react. component so this is my class component which I have defined now in this I have to define the Constructor with the props and in this Constructor I have to define the super keyword so that this do props should become undefined now in this super we have to let’s say uh Define for example I have to Define initial state so what I’m going to do is that I’m going to say this do state is equal to so I have to define a property property could be let’s say data and I have to Define some data over here let’s say I say it to initial data this is my initial data so my Constructor is done now I can write here let’s say for example end of class this is just my hand of Constructor so that you can understand well now let’s bind a method to this Constructor if you want to bind a method you have to bind it inside the Constructor please remember so let’s say I want to call update State this is just a method name you can use anyone of your choice any name this dot update State how you bind it you bind it using the keyword bind and this so by this statement what you say because you have to Define this inside the Constructor by this you are binding a method which is called update State and we are defining now the update State this is a method we are defining and in this update State what we can do we can set the state now what state you have to set so you are going to set the value of let’s say data because that is the property you defined and let’s say what we want to do is the data for example updated from the child component something like that could be of any text no problem at all so this is the end of the update State method now you have to implement always a render method now once you have implemented a render method it should have a return statement so we are using a return statement over here so this is my end of render method and this is let’s say end of return statement okay now in this return what I want to do is that let’s say create a container so my container is div and in this particular thing what I want to do is I want to define a sub component because in this particular uh demo what I’m going to show you that how you can update the state of the parent component from a child component so I need to have a child component over here so I’m going to define a child component which is let’s say name is content and I’m just taking a prop value over here with the attribute my data prop and I’m saying value of the initial value of the state is this do state my attribute name is data and then what I’m seeing is another prop I’m using is update this is the another prop you can use multip M props multiple attributes and I’m saying is this do update state so what I have done is that I want to update the state of the parent component my parent component in this case is app and I want to update the state from a child component which is the content so this class is over here and then I want to define a sub component a child component because we have not defined it yet yet so I will write class content my component name child component name is content so I have to Define over here so I’m saying class content extends react. component and what I’m going to Define here is uh Implement a render method and in this render method I will have a return statement that’s it now in this return statement what I want is let’s say I have a container a div again and uh for example let’s say I want to add a button and button will have let’s say on click event and on the on click event I want to call the props so what is the props attribute I want to call this dot props dot the update State prop update State prop I want to call this button is closed and let’s say the name of the button is as of now give it click now one more HTML tag let’s add one more HTML tag to use the another prop attribute and that is this dot props do my data Pro that’s it let me tell you that what we have done in this that in reactjs when we need to update the state of the parent component from the child component so here you can see on the screen that I have created here two components one is the parent component which is the app component and another another is the child component now what happens is that what you can do is that you can update the state of a parent component from its child generally what happens in a general scenario that a parent component updates the state of a child component but in this particular example what I’m going to show you that how you can update the state of a parent component from a child component so what I have done is that I have created a event handler update state in the parent component you can see that this particular event handler this is created in the parent component but it is passed as a prop to the child component you can see over here this particular event handler is passed as a prop to the child component so let’s see the output of this I’m saving this I’m just clicking and when I clicked it the button was there in my child component you can see the state has been changed and it is saying that the data has been updated from the child component you can see over here which means that the event handler which we created in the parent component can be passed as a prop so one good learning from this particular example we can get that the event handler which you are creating can also be passed as a prop and that prop can be used in another subc component or child component now another thing which I want to tell you that how you can prevent component from rendering for example there could be cases where you don’t want to render a component or you don’t want to hide a component all these are rare cases but in rare cases you might want a component to hide itself even though it was rendered by some another component so for that what we do generally is that we return null instead of its rendered output that is the only trick by which we can prevent a component to render on the Dom that you can return null instead of its rendered output now what we will do is that we can see the component events that how events are created in components so this I have already shown you let’s go back to the slide now and let’s talk about some other fundamentals so refs now we will talk about refs what is a ref in reactjs so ref stands for references you can say ref provide a way to access Dom nodes or react elements created in the render method this is the definition of refs so what I’m saying is that ref stands for references and they are used to return the references to a particular element or you can say component returned by the render so if I have a react element having a render method I have to place some reference in my component so by using the ref keyword I can place a reference to that particular component in reactjs so what happens that in the typical react data flow props are the only way that parent component interact with their children so what we have seen is that in reactjs probably if you want to pass the data or you want to flow the data from parent to the child props are the only way to modify a child you rerender it with new props however there are few cases where you need to you can say imperatively modify a child outside of the typical data flow so the child to be modified could be an instance of the react component or it could be a Dom element so for both these cases react provides an escape hch you can say and which are called refs now the important thing is that when to use refs so there are particular cases you can say few good use cases for using refs those are you can manage the focus you can manage the text selection or you want to apply a media playback there you can apply the refs you can apply the refs in application where you triggering imperative animations or you are integrating with third party Dom libraries probably there you can use very well reps so important thing is that avoid using Reps for anything that can be done declaratively now how you create the Reps reps are created using react. Create ref method and they are attached to a react element via the ref attribute so ref is a attribute refs are commonly assigned to an instance property when a component is constructed so they can be referenced throughout the component so this is very much important about react ra now if I show you that how you can use the refs so let me go back to the same example now ref is used to return a reference to the element this we have already known now what are the react WS although I will recommend that refs should be avoided in most of the cases however they can be useful when we need Dome measurements or to add methods to the components so we will see now that how you can use revs in this example I’m going to show you that how you can use revs to clear the input field okay so let’s remove everything we have a Constructor props this. State let’s remove this method and let’s remove this render remve this class okay so we are using the same app component what we are going to do is that we have a Constructor with a props keyword and the super keyword with props we have the initial State called this do state having let’s say for example some blank data in this case and then you have this. update State equal to this. updat State dobine and let’s have one more you can say Handler event handler which says this do clear input equal to this do clear input. bind this this Constructor is closed over here let me save this file and then I’m going to Define this update state update State event handler we have to Define so I’m writing here update State let pass argument to it and then I’m setting the state as so this do set State what is the value of the property value of the property I have to Define over here okay the value of the property is data and in this data what I’m doing is data value should be e do Target do value so we have defined the update State also that whatever value will be the input will become the set State value now we have to Define another method that another method is clear input so let’s copy and paste over here I have to define the clear input method now in this what I’m saying is this dot again I have to set the state so I’m setting the state same value I have to use and that is data so I am making it again Plank and after that I’m finding the Dom so how you can find the Dom reactjs is react Dom dot you have a method or you can say function called find Dom node so I want to find the Dom node and how can I find the Dom node I can find it using ref so what I’m saying is this dot refs I’m just taking a input value that is my input text box which I’m going to Define in the render method what I will do that I will use the focus method for this this is my clear input function and finally we have the render method Implement for the class and in this render method you have to apply the return statement the return statement we are going to write some HTML or jsx so I’m creating first of all the container my container is div I’m taking an input type value equal to this. state. data so that will be the blank value initial value this do state. data I’m taking a event over here on change so whenever there will be a change in the text box this method or this event will be called and in this I’m calling this dot update State and I’m also defining the ref which is very important ref is which I have defined here my input so on my input the ref will work so this input is defined so this text box is defined and now I will have uh button control where on click event needs to be defined so I’m defining the onclick event the name of the button is clear so on click what I want to do is that I want to call a binded method which is this do clear input and after that simply I want to place a H4 tag in this H4 tag I will show the final State value by using this dot final value how can I show that this do state do data so this completes my explanation of the Ws where what we have done is that we have created a component called app in this particular component what we are doing is that we are setting the initial state with a blank value and I have called two event handlers you can say this do update State and this do clear input now in the update state I’m setting the value what is taken as an input from the user in a you can say text box and then in the clear input what I’m doing is that whenever this clear input will be called I’m setting again the value to be planed but in this case what I’m doing is that I’m making a focus by using the ra on that particular textbox control or you can say input control now in the return statement in the render method I have taken a text box or you can say input control which is have some value then there will be a button so let’s see the output of this particular application so if I write let’s say vull and I click on clear you can see it has been completely cleared from here so that is how you can uh use ref in reactjs okay now we’ll talk about example or you can say a demo a project where the concept which we have studied till now are let me repeat one thing jsx we talked about components props State life cycle events and Reps so out of this eight important fundamentals of reactjs we have already talked about the seven important aspects but before moving to the last reactjs fundamental that is keys that how you can use keys in reactjs let me walk you through a very good example or you can say a small project so the project requirement starts with this particular you can say example so in this example what you can see is that you have to implement a search functionality where users can search from this particular text box and whatever they are going to search it it will be visible on the screen with that search result or that search keyword now what should be the approach of yours to implement this kind of reactjs application now what is the step one my recommendation is that you break the UI into different components or you can say component hierarchy when I say component hierarchy what does it mean that you break the comp complete UI because reactjs is all about UI so you break the complete hierarchy into components component hierarchy which means that there will be a parent component there could be child or subcomponents and there could be Sub sub components so first thing first what you want to do that you will want to do is to draw boxes around every component so in this particular example what I’ve done is that I have created different colored boxes around every component and sub component component and I have given them some names also but the problem is that how do you know what should be its own component okay so by coloring this particular example we can see that there are five components in this very simple application it’s a very simple application where there could be five components so one component you can see this outer boundary of orange color so let’s say I call this as filterable product table which contains the ENT ity of the example now there is a search bar this could be my second component in the blue color the blue boundary you can see it receives the user input now there is a product table you can see the Green Boundary this is my third component this is called let’s say the product table which displays and filters the data collection based on user input now another is product category row you can see here the San color sporting goods and electronics this is my product category row which displays a heading for the each category this is my fourth component and the final component is the product row which is in the red color which displays a row for each product so now we have identified the components in this particular example now if I want to arrange them into hierarchy because components that appear within the another component should appear as a child in this particular hierarchy so what should be my hierarchy the hierarchy to break this component the particular UI is at the top I will have a filterable product table then there will be two subcomponents search bar and the product table and in the product table I have product category row and the product row so that is how we can build any reactjs application now let’s build a static version of this in react okay by creating you can say uh different different components so just want to add one thing that if if you want to make your UI very much interactive you need to able to trigger changes to your underlying data model and we are going to use it because this particular application can be made easy with the help of State what is our state the search text the user has entered this is the state and the value of this checkbox because I have added a checkbox also over here so let’s create this particular example in reactjs application so before creating this I have a sample dat dat you can say a mo data which can be used for this particular example so let’s start creating this particular application in reactjs so I’m just removing all these stuff from here let’s create this example and see how it works while using in reactjs so let me close this and I’m going to open a new instance so I’m going to open it in visual Studio code or else what we can do is we can try this example over here okay so what we are going to do is now that we are going to see that search example in this particular demo so in this particular example we talked about that we will divide the complete UI or complete example into five different components so let write those components in the create react App application so for that I have a dummy data in this dummy data what I’m going to do is first I have to create a class component the outermost that is the orange one for example let’s say filterable product with the name filterable product and I’m writing extand react do component so this will be my parent component out of the five components this will be my parent component so I’m just writing the Constructor for this class please remember all the initial State and binding of the methods needs to be done always in the Constructor only so once this is done I’m initializing or setting the initial state by using this. State you can always use this. State and can apply the properties so what are the properties I want to use the properties which I want to use is for example let’s say filter text having initial value let’s say blank and another property which I want to use is in stock only I want to check whether the products are there in the stock or not initial value let’s say false now what are the different methods which I want to bind the methods which I want to bind is for example let’s say this dot handle filter text change this is just a you can say name of the event I have to bind it to the class so I will say this dot handle filter text change dot b to this and after that what I will say this dot handle another event handler I want to bind to this particular class please remember all this needs to be done inside the Constructor only I don’t want handle filter exchange I want this time handle stock change and I want to bind it that’s it so we have defined the Constructor we have defined two or you can say we have binded two methods now it’s time to Define them so first one is handle filter text change and another is handle in stock change so these are the two methods which we are going to Define now and after that once these are defined the final thing is that you have to implement a render method for this particular class so first set the final state in this so This dot set State and there will be this dot set state so in the handle filter text change so whenever there will be a text change I want to set the final state so handle filter text change I’m going to pass text property and then I’m going to set the state so with which value I will say that filter text will be whatever be the value of the filter text now the second method which I want to bind is handle in stock change so I will have another property for it that is inst stock only and in the this. set State what I want to do is I want to set the final value of this particular property which is in stock only so I will say in stock only the property will be what whatever we passed to it that’s it so I’m done with binding the events in the Constructor setting the initial State and setting the final state in the two event handlers now the final thing is to implement the render method so in the render method I will have return statement so let’s close this return and in this return what I’m going to do is that I’m going to Define first of all a container let’s say I have defined a container now the important thing in this container what I’m going to do is as I mentioned that that I have total five components in this particular search example I have five components to be defined and this is the first component on which I working so what will be the other subcomponents other subcomponents let’s say is the search bar and another component would be the product table so you can see on the image that there is a blue boundary for the search bar component and there is a Green Boundary for the product component so let’s create those or call those components so search bar I’m saying that filter text what will be my filter text it will be this dot state do filter text now I can Define more you can say Properties or the values which are available in the initial State what are those values which are available in the initial State I have let’s say inst stock only I can Define the instock only over here what I will say I will say this dot state do instock only and then on filter exchange what I can do is that I can call my Handler what is my Handler my Handler is this. handle filter textchange and on on instock change I can again call a Handler which is this. handle instock change so that is how you can define a search bar component so this is one of the component which is defined or you can say the sub component which is defined over here the another component which I want to Define is product table so another component which I want to Define is product table now why product table if you see in this particular example this green one is the product table component and the blue one is the search component so what we have done is let me repeat once again that I have divided this complete application this complete project into five components so the first component is the first one that is filterable product table the second one is the search bar and the another one is the product table so we are as of now just calling the product table component sub component so let me Define some properties for it for example let’s say products what will be my products so I will say this do props which I’m going to Define this doprs do products so I have to Define much more values for it one is products so another let’s say I want to Define what is the filter text in this case filter text will be again same this will be this do state. filter text and then I want to Define one more property for this component that is inst stock only what will be the value of this inst stock only the value of this inst stock only will be this dot state do instock only so that is how we have defined our another sub component which is product table now as you can see how we are modularizing this particular code so first of all we are calling this filter product table in this filter product table this is the main component we are calling two sub components which is search bar and the product table so this is the main component and let’s define the main calling that is react [Music] dom. render and this in this rea dom. render what we are going to say we are going to say that we are calling the parent component what is the name of my parent component it’s filterable product table I’m going to call it and I’m going to call it on a prop what is my prop now prop is the values the Json data which I’ve already defined my prop value will be equal to products so I will say react dom. render prop value products equal to product so just I have to close this first and in fact I can close it with closing tag and then I will say document. getet element by ID the ID which I have to Define where I want to render my output that’s it so we have called the parent component by using re. render here we are passing the props as products which is my sample Json data this is the sample Json data the category of the product the name of the product and what is its price so filterable product table is the first component which we have created which is our base component or you can say parent component now the other components which we are going to create is the search bar which is the sub component and the product table component so let’s start creating those components as well so what we are going to say is class name of the component is search bar so the name of the component is search bar which extends from react. component so this is my another component and one more component which I will have which is again a sub components you can see which we have created is a product table so we can just write here class product table extends from react do component so you can see we have also created these two subcomponent which is the search bar and the product table now let’s focus on the search bar that how we are going to implement the search bar component so in the search bar component the same thing we are going to first write the Constructor and in this Constructor I’m going to define the props once this is done I’m going to call the super keyword which will have again props so this we have done now multiple times and if you want to bind some some event over here in the search bar then you can bind it over here itself so what I’m saying let’s say I want to bind couple of events over here so I will say handle filter textchange handle filter textchange so let’s say this dot handle filter exchange do bind to this and I want to have one more event handler which is handle and stock I want to check whether there it’s in stock or not so I will say this dot handle in stock do bind and this so that is how I have defined the Constructor once I Define The Constructor I have to write the definition of these events which I have written so first of all handle filter textchange this is the handle filter textchange and the another one is I want to have handle in stock change so let’s write handle in stock change now in the handle filter textchange what I want is this dot because I have the props so on filter textchange I want to pass the value which is written by the user in the text box so e do Target do value this is the value which is written by the user in the search and in the handle inst stock change what I will say that this dot DRS dot on in stock change what I’m going to write is that e do Target whether we will check that checkbox is checked or not now once this is done we will implement the render method for this particular component so I will say render and then I will have a return statement which will allow me to write the jsx for this particular class so let’s say I use a form element of HTML and then I want to implement a textbox kind of functionality so for implementing this textbox kind of functionality I’m using input input type type will be equal to text placeholder placeholder for this input let’s say equal to search just a custom text you can say now what will be the value this is something very important that what value we want so this do props what is the text which user has written this do filter text and what I want as an event I want an event on change whenever the value will change what I want to call so I want to call this do handle filter text change that’s it so my input is defined I want to Let’s Take A P tag for example in this P tag what I’m going to do is again I’m to take a input type now this time it will be of type checkbox because in this example you see I have a requirement of implementing a text box and then I want to implement a checkbox okay so I will say that this is is of type checkbox checked I will check whether it is checked or not so I will say checked equal to this do DRS do in stock only whether it is in stock or not and on change if there will be a change even on change I want to call this dot handle in stock change so that’s it and once this is done I want to let’s say for example give some space and I want to write some text that only show products in stock just after the check box just like in this example in this particular example you can see in the requirement that I want to show some static text that only show products in the stock so I have written only show products in the stock so that is how it completes the search bar component so we have written the two components as of now and now I’m going to write the product table component now this component is again very important because in this component we are going to Define two sub components more so this is our third component which I’m going to write and after that in this particular component I’m going to call two small small sub components so let me Define those components very quickly what will happen you will understand what we are doing so what I’m doing is that I will Define a very small components for example let’s say product category R so I will say product category row extends from react do component this will be my one sub component for this product table component and another would be class product row this will be again a component so extends from react do component that’s it so we have to Define these three components and our example or this complete project reactjs application will be over so what I’m going to do is first I will Define this product table so render method which is implementation of the class and in this render method what I’m going to do is that I will say Define some constants so what is the filter text filter text is this do props do filter text and I’m going to define the stock value with inst stock only which will be this do props do in stock only once this is done I’m going to Define an array of the rows so array of the rows for example I will Define with cons rows equal to an array I’ve defined an array and let’s say want Define the last category so that I have that how many categories are there let’s define it null as of now now what I’m saying that this do props dot products because products I’m passing it as a prop and it is can say Jason array so I can apply for each over here what I’m saying for each because on a array you can apply the for each so in this case I’m applying the for each and I’m on which quantity I want to apply the for each I want to apply on a variable let’s say for example product and want to apply a arrow function that’s it and I will write some conditions over here that index of filter text whether it’s in stock or not and so on I will write some of the values over here I will create a structure and before that what I can do is that I can Define this product category row so let’s define this product category row so I’m saying render now in this render method I’m defining a constant that is category is equal to this do props do category and there will be a return statement for this now in this return statement I’m just using a TR structure for example and this TR I’m defining a header with a th and let’s say some call span I can give some call span yes I can define a call span and what I’m saying is that in this th that is the table head I want to define the category so you can see here that this category is defined as a sporting goods or Electronics so I want to Define n as header that kind of functionality I I want to implement so this product category we have already defined where we are displaying the category now comes the product row now in this product row what we are going to Define so in this product row what all I want is that I want the product maybe the product name whether the product stocked or not at the same time I want the price the product price so what I will say that I want the product name I want the product price okay so let me do this and let me show you the example now so we have defined the product category and product row now you can see over here the product table we were writing the product table where product. name. index of elex equal to equal to minus one we are just comparing whether it is in the stock or not if it is there in the stock we are pushing it to the rows array so you can see here different different rows so we are pushing the values in the rows and then we are are declaring two subcomponents product category row and product Row in which we have defined the category which will be the category header and then we have Define the product row individual where we are saying that we are using the product name and then we are also displaying the product price as you can see in this example that you have to define the product name and you have to define the product price okay so this completes our demo of using the search example let me save this and open it on this screen okay npm start is this is running so just a minute the app.js I have nothing in the index.js I have the search example and in the react dom. render I’m calling this root everything is in place should show up now me refresh it okay now it is showing up so this is the output of this particular example we have implemented the five components as shown in this particular example so let’s check the output now let’s say if I want to search for football it is giving me the result for football only correct and now if I want to remove this football from the search component it is showing me all the results or you can say all the products with their prices if I check this checkbox which is only show products in stock and the products which are in trade are not in stock so it will hide those products which are not in stock for me and if I uncheck this cheick box it is showing me all the products whether they are in stock or not so this is you can say a demo which I have shown you of the complete reactjs fundamentals where you have used state where we have used props we have created the components five components we have created so for example let’s search Nexus 7 which is in another category it is giving me the result of Nexus 7 along with the product name and the product price so that is how we can create a very beautiful applications in reactjs by decomposing the complete UI into different different components this is the beauty of reactjs you can say okay so now we will finally talk about the final reactjs fundamental that is keys so what are keys in reactjs so let’s talk about the keys now so if I talk about keys keys are the elements you can say which helps react to identify the components uniquely so for example if I I have a ordered list where I have some allies I have a unordered list UL where I have some of the Allies so I can Define the keys on them so that those react elements can be identified very much uniquely so basically I can say that keys are the elements which helps react to identify the components uniquely so on the screen you can see that I have two react Elements which is having two render methods but they uniquely identified by different different keys so for one of them I am using the key as 101 um for another I am using the key as 102 so you can say that keys are the basically things which helps us to identify the components uniquely now you can see here that if any of the key is changed again I can check which key has been changed so Keys again I’ll repeat that these are the elements only which are applied on react elements specifically and they help react to identify the components uniquely okay so we’ll see the example of keys now that how we can use keys in react applications this is a example where I have used the concept of keys just to let you understand that how we can use the keys in reactjs and how they help us to uniquely identify the components and react J so in this particular example you can see that there is an array I have created const numbers uh number array with five values 1 2 3 4 5 starting from the index zero obviously because it’s an array now react dom. render this is the first method which is called in this a component is called which is the number list so number list is a component and then there are props which is used called numbers and this numbers will have this array values and then document. get element by ID now let’s talk about this number list component now this is a function based component so function number list now as you can see over here that I don’t need any state I don’t need any Constructor that’s why I have no event which is getting binded that’s why no Constructor no super keyword is used so in the function component that is number list this props is passed so numbers is props do numbers because this numbers will be taken in the props Now list items numbers do map again map is a very important you can say function when it comes to array or to iterate on the array values please remember you can use the map function this is a predefined function in jQuery and JavaScript used for arrays where you can I trate through the different value of the arrays so numbers. map number is just a key you can say now list item Now list item is again a subcomponent here I am using the key which is number. two string so I will have the key as 1 2 3 4 or five and value equal to number now in the function list item what I want to return is I want to return a list of allies having the props do value so whatever will be the value in the number that will be shown as Li but all these will be identified uniquely so if I go to inspect element I’m just showing you that how you can see here so this is a ul and this is the Ali structure which you can see over here so all these Alli structure is defined or you can say identified uniquely with this key value so what will be the key value in this case that key value will be 1 2 3 4 or five okay so that is how we can Define the key on the component or in fact you can also Define the keys directly on you can say the HTML tag for example lii so one more example if you’ll see for the keys the same example which I have shown but in this case just is a very important thing to understand that when you are returning you are returning a ul and and then you are returning the list items from the list item component this is very important to understand over here that how you are returning this ul and Alli structure in the output on the right hand side you can see the output the important thing is that we have created here two function components two function components are one is the number list which is the main component called from react dom. render and in this number list I am calling another sub child or sub component which is again a function component called function list item so function list item I’m passing the props I’m returning the Ali structure from here and I’m also returning a UL structure from where the list items will be shown so what are the list item will be shown whatever the number which are there in my array which is 1 2 3 4 and 5 so all these numbers will be shown on the screen as 1 2 3 4 5 so let’s come back to the PPT again so we talked about keys so basically we have talked about now all the reactjs fundamentals I will just again repeat very quickly for you that what all fundamentals we have talked about we talked about jsx components props State life cycle events refs and finally we talked about keys so these are all the basic fundamentals of reactjs and we have seen very good demos based on these topics one last example or you can say final demo based on these Concepts and specifically on life cycle methods which I want to show you I’m going to show you that and then we’ll start with the advanced concept of reactjs that is flux and Redux so I’ll talk about what is flux and what is Redux in detail but before that let me show you a very good example where we will be using the life cycle methods and I will show you how we can use a life cycle methods while working with reactjs so again I’ve have came back to the same example okay so what I’m doing here is I’m just commenting this particular code so that there is no confusion let’s check the output it should show us nothing now okay that’s great it’s blank because we have not return anything we have commented the complete code okay great so let’s write a fresh code now so what I’m going to do is that I’m going to show you a clock example which will completely show you the date and time but here I’m going to use the life cycle methods which I’ve shown you in the different phases so one of those methods I’m going to use is component did Mount and component will Mount okay so let’s get started I’m creating a component so I’m writing class clock extends from react. component just like we are writing every time but before completing this class component I want to write which is going to rendered on the browser or on the Dom so react dom. render what I want to show I’m I want to show this clock component so component should be always in the cly braces and then I have document. get element by ID where I want to render the output so this is done so we are sure that the first component or the parent component which will be called is the clock component that’s why I haveed the react dom. render in the first place so first thing first so since this is a class component I need to have a Constructor and then in the Constructor I want to define the super keyword so that this do props does not become undefined and then if I want to set the initial state so I have to set it in the Constructor itself so I’m saying this. State this is my initial state which I’m setting so I’m saying what is the date so I’m saying it let’s say new date so I’ve defined the Constructor now outside the Constructor what I’m going to do is that I’m going to Define a method called let’s say tick which is going to work as a ticker nothing else so in this tick I’m going to set the state so I will say this dot set State and what I’m going to set the same state of the same property date with the new date so I have set the state now in the Teck method we’ll call the Teck method later and now I’m going to Define two life cycle methods first of them is component did Mount so intellisense is helping me over here component did Mount and next I want to call is component will unmount so again intelligence I can use the intelligence great so in the component did Mount what we are going to do is that we will Define a property let’s say this dot for example timer ID equal to I’m going to define a predefined method called set interval in this set interval what I want to set is I want to Define Arrow function and that Arrow function is let’s say this dot take and I have to define the range for set interval now in component will unmount since I have to unmount the component I have to destroy the component from the dop I will write clear interval again a predefined one and in this I’m going to to pass this do timer ID so that is how we can Define the life cycle methods now once these life cycle methods have been defined what I’m going to do is default method which needs to be implemented as a part of the class is render in this render I will implement this return statement okay now in this return statement what I’m going to write is that let’s say let’s have a container so Dev is my container I will write some H1 statement example let’s say edura reactjs full course by the chin and then in H2 h2 tag another tag I want to take in the h2 tag what I will write that it is maybe with the time probably I want to say this dot state do date maybe I want to convert it probably to local time string so I and convert it to local time string and I can Place full stop also over here so you can see the output that it is showing the output adura reactjs full course by VJ it is 1129 and 50 p.m. so that is how you can use the life cycle methods in reactjs application and we have set the interval with 1 second so that’s why every time you can say the seconds value are getting changed so I will again repeat this that what I have done in this what I have done in this is that I have set the clock component in the clock component this is my parent component and since this is the parent component what I have done is that I have set the initial State and in the tech method I have set the final State now in the component did Mount and component will Mount methods there are two methods which I have defined component will unmount and component did Mount in these two methods I have said the interval that every second it should show me the the time interval what is the current time interval and in the render method in the return statement I have placed this H1 and H2 tags so now let’s come to the another concept which is flux what is flux in reactjs so let’s talk about something called flux now so till here let me repeat once again that we have completed all the eight reactjs fundamentals which includes jsx props component State and so on we have also talked about some life cycle methods how to use refs how to use keys in reactjs now what is flux now the question which will be coming in your mind is that what is flux so flux is a pattern for managing the data flow in your application as simple as that so what I can say is that there are data patterns through which you can manage the data flow in your application flux is one of them so the most important concept of reactjs or you can say in data flow that in reactjs the data flow is unidirectional by that what I mean is that data flow only in One Direction so that is the use of flux before Deep dive into this flux I want to show you one website from where you can study if you want to go deep dive into flux this is a Facebook site facebook. github.io flux this is a very good site to learn flux starting from the basics to the advanced part so I will recommend that you go through this site facebook. github.io flux this is official site from the Facebook on the GitHub okay so again coming to the PPT so we talked about flux flux is a pattern for managing data flows in your application and the most important concept is that data flows only in One Direction now what are the different parts or what are the different components in flux so flux has basically four main components one is the dispatcher another is a store another is action and the view so we will see this in detail but before that this diagram is very important this is a representation of a data flow in any reactjs application it starts from view you can see the view over here now what view is doing that view sends action to the dispatcher now dispatcher can have n number of actions n number of actions can work on a single dispatcher now the dispatcher sends actions to every store so what happens that once actions are given to the dispatcher from the view now dispatcher sends these actions to the store and then again store sends data to the view so you can see that this is a unidirectional flow of data in reactjs which starts from view through actions it goes to dispatcher and from dispatcher it again goes to store and from store the output again goes to view and that is how it works in a unidirectional fashion now we will talk about all these different components of a flux data flow one by one now what is dispatcher now as you can see in this diagram that dispatcher is getting acted upon by the actions so view is sending a action to the dispatcher so dispatcher receives action and dispatches them to stores that have registered with the dispatcher now every store will receive an action there should be only one Singleton dispatcher in each application this is very important that in any reactjs application there should be only one single dispatcher let me explain you through an example so for example user types in a title for a to-do and hits enter so we are talking about a to-do application over here implemented in flux and Redux for example now what happens is that user types in title for too and then press enter what happens next The View captures this event and dispatches and add Todo action containing the title of the too so in the title you must must have written some too that I have to Dost this task this task and this task that becomes the title of the Todo so what happens is that the view which is there in your unidirectional data flow it captures this event and dispatches a to-do action or any kind of action containing the title of the too and then when it dispatches any action it is received by a store so every store will then receive this action please remember I’m saying here every store and this will come out as a basic difference between the flux and Redux so when we will talk about Redux then we will see that Redux always have a single store but in case of flux flux can have many stores so that is why it is written on the screen that every store will then receive this action so there could be multiple store in a flux base application now what is a store we are talking about store and store so what is a store all about so store is is the place what it holds the data of an application this is the most important thing of any Redux based application in reactjs the store will register within application dispatcher so the store is getting the dispatched action from the dispatcher as an input or you can say the action is received as an input now the data in a store must only be mutated by responding to an action there should not be any public Setters on a store only Getters so action store is getting an action via a dispatcher and then store decides what actions they want to respond to every time I store data changes it must emit a change event so store then do some processing and then it decide that which actions needs to be responded to and every time a store data changes it must emit a change event there could be or there should be many stores in any application when it comes to flux but when we will study Redux please remember there is only a single source of Truth in Redux application so there should be only one store when it comes to Redux and then we can see the same example which we were talking about a to-do application so a store receives a to-do action via dispatcher now it decided it is relevant and adds the to-do to the list of things that needs to be done today and then the store update its data and then emits a change event now what are actions in any flux application we are talking about actions actions are given to store via a dispatcher dispatcher dispatches the action to the store now what are actions so basically action defines the internal API of your application what action needs to be taken they capture the way in which anything might interact with your application they are the simple objects that have a type field and some data but when it comes to action it’s very important to understand that action should be semantic and descriptive when it is taking place they should not describe the implementation detail of that action so I will say that use delete user rather than breaking it up into delete user ID clear user data and so on so remember that all the store will receive the action and they can know that they need to clear the data or refresh credential by handling the same delete user action so instead of longing the names of the action you can be very precise while giving any action to the store now this is just a action example so when a user clicks let’s say delete on a comp completed to-do a single delete to-do action is dispatched because in a to-do application some of the tasks could be completed and some are pending so when you click or when any user clicks the delete on a completed to-do a single delete to-do action is dispatched to the store now what are views so we talked about dispatcher we talked about store we talked about actions now the last thing which we want to talk about is the flux in the flux is views so this is the last component you can say of any flux data flow data from the store is displayed in views so views are the thing which is displayed on or render on the browser on the Dom views can use whatever framework you want in most example we are using the react so when a view uses data from a store it must also subscribe to change events from that store so if you remember the diagram which I showed you from view via action it goes to dispatcher from dispatcher it goes to store and from store it again goes to view so when a view uses the data from a store because in a store something has been updated something has been modified so when a view uses the data from a store it must also subscribe to change events from that store this is very important and then when the store emits a change the view can get the new data and rerender it because it has become the updated data now or the processed data so that’s why we are calling that now from from the store when the data will flow it will be the new data and which is going to be rendered so if a component ever uses a store and does not subscribe to it then there is likely a sub bug waiting to be found actions are typically dispatched from views as the user interacts with the parts of the application interface so please remember whenever there is a user interaction on The View so some actions will go to dispatcher which are dispatched to store and there will be some processing happening some changes happening in the store which is again mve to The View and the views will have then the new data which they can reenter on the browser okay so now we will talk about what is Redux in reactjs because we have already talked about that what is the flux and what are its basic concepts so let’s talk about Redux now so why we have to use Redux with reactjs as we know that react is only a view part in uh MVC model kind of application so to control the data flow we use Redux as a data flow architecture so on the left hand side you can see that there is a application having multiple components which we talked

    about and if we want to flow the data in this particular application we want Redux this is the basic use of Redux you can [Music] say so routing is the ability to move different parts of an application when a user enters a URL or clicks an element like link button icon image Etc within the application routing is basically required in transitioning from one view to another in an application in simple words I can say routing is a process in which a user is directed to different pages based on their action or request now we are good to go to understand react router react router is a standard library system built on top of the react and used to create routing in the react application using react router package it provides the synchronous URL on the browser with data that will be displayed on the web page it maintains the standard structure and behavior of the application and mainly used for developing single page web applications it enables the navigation among views of various components in a react application allows changing the browser URL and keeps a UI in sync with the URL reactjs router is mainly used for veloping single page web applications and it is used to define multiple roots in the application when a user types a specific URL into the browser and if this URL path matches any route inside the router file the user will be redirected to that particular room react router plays an important role to display multiple views in a single page application and without react router it is not possible to display multiple views in react applications most of the social media websites like Facebook Instagram Twitter Airbnb Etc uses react router for rendering multiple views to make use of react router we have something called as react router Dom what is this react router Dom which is actually the react router data object model it contains the Dom bindings for react routers in other words the router components for our websites and if we talk about react router native it contains the react native bindings for react router now moving ahead let’s see the advantages of react router because of which we are using react router so in react router it is not necessary to set the browser history manually and Link is used to navigate the internal links in the application it is similar to the Anchor tag which we know is very simple as we have learned in HTML it uses switch feature for entering and the router needs only a single child element so no complexity at all and in react router every component is specified in now talking about the installation part so what we can do is we can just go to our nodes official website and we can just download the nodejs whatever the configurations of your windows are we can just download it and once we have set up our nodejs on our PC what we’ll do is we will just install create react app okay that will be very helpful while creating the application the demo which I’m going to show you in the later part of the video in that it will be very helpful the command to install create react app is npm install hyphen G then create hyphen react hyphen app I’ll just click on this and this is how it is going to install create react app it will take quite some time but I already have it installed so I do not need it so I’ll just stop this thing over here and after that when we will start off with our demo part we will execute one more command that will be npx create react app and we’ll give the application name that we will see in later part part of the video and we’ll start off with the demo part while creating the application itself so this is what you have to do then you will have to go to the directory where you have created the application the folders so with this we have successfully installed our create react application which will help you to directly create and react application we can just add the components to that we can change the code and we can just modify it and we’ll be good to go now let’s discuss the components of a react router so there are four major components of react router which are frequently or always used whenever we are working with the react router so the first one is browser router then we have root then we have link and then we have switch so talking about browser router browser router is a router implementation that uses the HTML 5 history API which includes push State replace State and the pop State event to keep our UI in sync with the URL and it is the parent component that is used to store all of the the other components moving to root so root is the conditionally shown component that renders some user interface when its path matches the current URL talking about the link so link component is used to create links to different roots and Implement navigation around the application and it works like html’s enor tag and talking about the switch so switch component is used to render only the first route that matches the location rather than rendering all matching roots although there is no defining functionality of switch tag in our application because none of the link parts are ever going to coincide but let’s say we have a root that there is no exact in here and then all the root tags are going to be processed with which is start with slashes this is where we need switch a statement to process only one of the statements so this we will see by a demo so now I’ll just open my vs code the editor which I am using you can use whichever editor you want to use and then we’ll see how to include these components of react router on the basis of the part of URL that the router will use to track the content that the user is trying to view react router provides three different kinds of routers now we will see the types of react routers so they are namely memory router browser router and hash router talking about the memory router memory router keeps the URL changes in memory not in the user browsers keeps the history of the URL in memory and does not read or write to the address bar so the user cannot use the browser’s back button Buton as well as the forward button it doesn’t change the url in our browser it is very useful for testing and non-browser environments like react native talking about browser router it uses HTML 5 history API which includes push a state replace State and pop state apis to keep our UI in sync with the URL and Roots as normal URL in the browser and assumes that the server is handling all the request URL and points to root index.html it accepts Force refresh props to support Legacy browsers which doesn’t support HTML 5 push State apis and talking about this hash router so hash router uses client side hash routing it uses the hash portion of the URL that is window. location. to keep our UI in sync with the URL and hash portion of the URL won’t be handled by the server the server will always send the index.html for every request and ignore the hash value it doesn’t need any configuration in the server to handle roots and it is used to support Legacy browsers which usually don’t support HTML push State API and it is very useful for the Legacy browsers or we don’t have a server logic to handle the client s and this route isn’t recommended to be used by the react router dting and the Syntax for these kinds of router we will see just in the import statements we just have to change it and we will elas it as router let me just show you now what we will do is we will set up our react application so we’ll create a react application using Create react app and for that let me just go to my command prompt there let me just go to the desktop so I’ll change the directory over here I’ll move to desktop and then I’ll run this command npx create hyphen react hyphen app and let me call this app as edira routing now this command will create so now here you can see is we cannot create a project name _ routing because of the npm naming restrictions name can no longer contain capital letters so we’ll just give it as Eda routing now here you can see creating a new react app in this folder okay inside the desktop we’ll be getting folder for react application that will be known as Eda routing and it will take some time it will actually take sometime like around 2 3 minutes and once this will be done then what we’ll do we’ll move to our this application folder that is AA routing and then we will install our react router Dom which I had explained you it contains the Dom bindings for react application we’ll make use of npm and we’ll install react router Dom and then we’ll start adding the components I’m using the visual code Visual Studio code AS editor you can make use of any other editors as well now as you can see the dependencies have been installed and you can see over here as well like some 29 packages have been added so with this create react app we can simply create our react application and we can just add the codes we can add the components and we’ll have our react application created with this we have successfully created our react application and the name of our react application we have given as a Rea routing okay as we are going to learn routing with this so with this you can see over here happy hacking and now we are good to go now what I will do is first we will move to the project directory or the application directory which we have created right now we’ll give CD and edore routing and now what we’ll do is we will install the react router Dom for our this application so we’ll give npm install react router D okay router D and we will give a space and hyen save this command we have to give all right this will install our react router Dom for our existing application which we have just now created with the help of create react app it will also take some time but less than the previous one and yes with this we have successfully installed our react router Dom for our our Eda routing application now what we’ll do is now we will start creating or adding the components to the application now what we’ll do is I’ll just close this up and in my vs code I’ll open the folder which has my application so in this yeah in desktop you can see Eda routing is there I will just open this one now here you can see our application or the main folder is edore routing then here we have node modules all these libraries and the pendencies are here like you can see Babel and all for es6 and all we have just for testing so all these are available they have been automatically added with the help of create react app and then here in this public we can see here is the index.html so if we want to change the title or the HTML part of our application we can just make changes over here or we can just create the new one we can just create a whole new code as well so I’m not going to all this HTML and CSS part majorly because we are here to learn about routing first what we’ll do is we’ll go to our SRC folder and here you can see we have app.js file so this component this is actually where we will be using routers react routers we are going to make use of them over here in this application so that we’ll provide the links and the switch and everything which will be linking to the other components so what we’ll do is first of all let me just remove whole code because this is a default one this create react app is for the default one it is like reacts default application which has been created now we have to create the components add them with the help of routers and all now first what we’ll do is we’ll import our router so what we’ll do is we’ll write import so as we have learned about the routers so we’ll give browser router as we have seen this is the first component of react router so we’ll give browser router and we’ll alas as router then we have the other component that is root then we have link and then we have switch and this we have to get from react router Dom now here be clear with the thing that here this browser router is elas as router now to use react router what we’ll do is we’ll create some components in this react application so what we’ll do is inside our this SRC folder what we’ll do is we will create one more folder and that we will make it as comp component so we have one more folder inside the SRC that is component now here in this we’ll create other files other JS files which are actually the components so let me just add one file as home.js then we will create one more about. JS and then we have contact. Js so these three components I have added now let’s add some code to this so that will be available on the screen whenever we will be executing our application so let me just go to home and let’s add some code like first thing is we have to import react from react and then we will write the function or the reducer we know function home which return heading we’ll write like welcome to Eda and that’s it and then we’ll close this function and we’ll write this export default app default we’ll just save it and then next is our about component so in this will’ll simply let me just copy it from here we’ll just paste it and we’ll make the changes over here here is about now let me write let me write something about Eda so Eda is in e-learning platform and let me give you some more thing like like know more about Eda here now here we I’ll make use of the anchor tag and I’ll give the link [Music] http://www.ed now here we have the link and I want to display this as well so what I’ll do is I’ll just type it over here as well and with this we have closed our anchor tag now when we have created this one and the anchor tag is closed over here now one more thing is we have to return something so here in return I’ll put all this inside a div so this one is also ready and here I’ll have to give this about the function which we have just now created let’s save it and now moving to our contact component so again let me just copy this thing and we’ll put it here now here what I’ll write is like for queries contact here now no link I don’t want to give any link over here now let’s just put the number let me just put this over here and one more thing see and if I want to put it in the next line and all so I can just give the BR tag as we know in HTML and no need to give it like this let me give one more yeah now in this about what we’ll give is we’ll give the in place of about we’ll give contact me just remove this anchor tag now let’s make a little change over here let me just put it inside the address so that it will be like a single element over here and let’s just remove this heading tag all right and we’ll just give it up so we have created three components and we have added them the home component then the about component then we have our contact component now in this app.js what we’ll do is we will make use of our react router and then we will link these components now what we will do is we will start adding the components to our app.js the components of react router over here now as we have already added this browser router as router now let me just create class app extend component and then we’ll give it as render we’ll make use of render function then we’ll return router and inside a div we provide the class name let’s give it as app and then we have closing tag for rter now moving ahead what we have to do is inside the div we have to put the links as well link is also one of the component of react router before moving ahead we can just see let me explain you the components which we have created especially talking about the props associated with the root component we’ll see over here as you can see the exact right this this is used to match the exact value with the URL for example here we have given exact and then the path that to home component and this will only render the component if it exactly matches the path if we remove exact from the syntax then UI will still be rendered even if the structure is like slash and home like that and then we have something called as path over here so this specifies a path name we assigned to our component the path name which we have assigned like contact home about like that and then we have something called as component it refers to the component which will render on matching the path these components which we already have contact home about out all these and as we have seen in this we have switch as well this switch will be used to render a single component wrap all the roots inside the switch component so we have just wrapped it around and this link we have used to create the links to our components it uses the two prop to describe the location where the link should navigate so here you can see this two prop this two prop has been used by this link component now let’s see the output of this application or this code which we have written now we will see the UI of our application it’s taking a little time so it will get executed browser will be launched here so you can see over here on Local Host 3,000 it will be launched here it comes now this is the page okay now whenever I’ll click on home now we have moved to our homepage this is happening with the help of our router the components which we have used the link component we had made use of browser router and the switch now when I click on about us here you can see the URL is also changing and with this if I’ll click on this link so this is the normal HTML link part with the help of anchor tag I have just redirected to our Eda homepage let’s just go back and then on contact us you can find it over here so whatever we wanted to display in our application that’s been displayed in the different pages and we are redirecting to these pages with the help of react router and here is the URL and the application name is like react app we can make change in that also let me just go to this one and in the index.html we can just change the name of the title like we can change the title let me just give it so here I’ve just made it as Eda let me just save it and then it will automatically be reloaded here you can see now the name of the application is your Ed over here so this is the output which we are getting so this is how finally we have successfully implemented the navigation in our react app application using the react router now as earlier we have talked about the types of react router so let me just show you here so as you can see in this app.js we had made use of browser router so we have hash router and memory router what we have to do is just in place of this browser router we can just simply put memory router and everything else will be same and we can just elas it as router similarly for hash router we just have to make change in hash in place of memory I have kept it as hash now it became hash router and the functionalities which are supported by hash router memory router and the browser router will automatically be implemented so no need to change anything else we just have to import that type of router and we will elas it as router itself and we have already discussed what are the functionalities and how these routers are implemented according to their [Music] types now let us go and explore all about reacts hooks starting from what is reactjs hooks reactjs hooks are functions that allow you to use the state and other react features in functional components they were actually introduced in react 16.8 has a way to make it easier to share the stateful logic between the components and also to make it easier to work with the functional components here the most commonly used hooks are the use State use effect and use content so these are considered more important or most useful hooks so other than this we will also explore some of the additional hooks too for example use reducer use memo use call back and use layout effect so these are the hooks that we will be exploring in this session we will see each of it in a detail form right now before that we will see what actually the hooks are now let us go back and see before react h hooks so before react hooks if you wanted to use the state or other features in the component then you had to use a class component here the class component are more complex than the functional components and can make it difficult to reuse the stateful logic here with the react hook you can use the state and other features in the functional component which makes it easier to share the state full logic between the components and also it makes it easy iier to work with the functional components here the react hooks differ from the traditional react class component because in that they allow you to use the state and other features in the functional components instead of having to use the class components and additionally you must keep this in mind here the react hooks do not require the use of this keyword which makes them less verbos and easier to understand and why do we say here the class component is more difficult so here the class component in react are based on this JavaScript class syntax which can make them difficult to understand for the developers who are new to the react or who are more familiar with the functional programming additionally these class components often include the boiler plate code such as the Constructor functions and binding the methods to the correct context which can can add unnecessary complexity and make the code harder to maintain and the most important feature of this react Hook is it allows the creation of custom hooks which are reusable functions that can hold the state or the logic that can be shared between the multiple components here this makes it easy to extract and reuse the logic that is used in the multiple components so at the end this can make the code base more maintainable and easier to understand one of the main advantages of react Hook is that they make it easier to share the stateful logic between the components as I said in the previous statement so this is because the state and the logic can be extracted into a single hook and it can be reused in multiple components rather than having to duplicate the logic in multiple class components react hook also make it easier to test the functional components since they do not relay on this keyword and the life cycle methods now let us see the types of hooks we have in this session here we have three major hooks that is use State use effect and use context so these are considered to be basic Hooks and more important hooks or commonly used Hooks and additionally we will also look into use reducer use memo use call back and finally use layout effect so these are the hooks which we will be covering in this session other than this we also have many other hooks so if you want to learn more about hooks or more about react years you can enroll to our edura react years certification training course where we will be providing you with an Hands-On and a live demo sessions so here we will get started with our first hook that is use state so let us see what is use State and how does it work in our course code and I will give some of the tips that how can you use the use State inside the code now according to the definition use state is a hook in react that allows you to add the state to the functional component state is a way of storing and managing the data that can change over time and can affect the components behavior and rendering though I will explain it in a detail form here this U state is a hook in react that allows you to manage the state in the functional component prior to the introduction of HS the State Management in react was only possible in class-based components so with this use of use State you can now manage the state in the functional component as well and also the U state is a function that takes a single argument so which is the initial state after that it returns an array with two elements that is current state and a set a function for updating the state the current state is a value of the state and the setup function is used to update the state so here I will explain this in a detail form with an example so I’m using visual studio code so here I will show you a small demo for that I will jump into Visual Studio code now as you can see I have already created a app called counter app so you can see here the counter app and here I have created a counter. GSX inside the source folder and inside the components folder now let us write a small react hook example first I will import the react component from react for that write just import react from react okay after that I will import UST State Hook from the react package after this line for that you just need to write Import in the bracket U state so you will have some of the recommendations over here and you need to find U State over here so State and you can notice that I’m writing in a camel case statement here the react GS takes the input in a camel case after this now that we have imported the component and use state from react at the same time we need to export this file file to the index.js right so that the output will be shown in the browser so that don’t forget to export this file to the index.js so I will export so just type export default counter because my file name is counter so I’m writing counter and you just need to go inside the index.js and include the counter file inside the react strict mode now let us get back to the counter. JS file so now let us declare a new state variable so let us call this as count here the U State returns a pair of value that is the current state and the function that updates it as I said in the explanation so that we will just write a function called counter inside that just write const and pass the values that that is the current state and the function that updates it right so here the current state is this count and then we will set the count so this will be the function that updates it and in our component we use the U State Hook by invoking it and passing the initial value for our state variable which is zero so I’ll use that so I’m using the use state so I’m passing the value as Z zero okay now let us return this so I’m wrapping this with a div tag now here we use the count variable to display the current number of Clicks in the page and in the button tag here we use this onclick property to specify a function that will be called when the button is Click right now for that I will write a paragraph to indicate the numbers so I’m writing you click here I’m calling the count and this count will be indicated in numbers so you have clicked this many times so right so so I will give the button to click so on click so I’ll set I’m calling this set function so that is set count this s should be in the small here the function that we pass to on click is an arrow function that calls the set count and passes in the new value of the count so which is the current value + one so let us write the count that is the current value and + one so whenever the button is clicked here the count will be incremented like the current value + one so the count will be incremented to one so I’ll close the button by telling click okay so let us run this by typing npm start and you can see the server has started you can see that we have written you clicked this many times right so let us click this button and check so here you can see the number is incrementing so if I click on this the number is changed the value to two so that the current value is right now is two so if I click the button once again the number will be incremented + one so that the current value + one will be incremented so here as you can see the count this is the current value and plus one so every time the button is clicked this function will be called and the state variable count will be updated and here the component will be rerender to reflect the new value so I hope you understood now I will give you some of the tips to use the use State here we have some of the limitations for example keep State update simple here you need to avoid the complex Logics or the calculations when updating the state instead use a call back function to update the state based on its current value and next so you need to keep in mind that you need to use the use State when it is only necessary here use props or the context when possible instead of creating the state for every piece of data after that you need to use the use effect hook for the side effects keep the state top level that means you need to keep the state at the top level of your component hierarchy as opposed to bury deeply in class component this make it easier to understand and debug the code easier and you need to keep in mind that you need to test your component always you need to test your component to make sure that they work correctly and the State updates are behaving as expected with that we will move on to the next hope that is use effect now let us explore about use effect here this use effect is a hook in react that allows you to synchronize a components with an external system also it will allow you to tell that react to run a piece of code after rendering in order to update the system or the side effects of the component so this is done by specifying a call back function that contains the code to run and an array of dependencies which are variable La that components uses and that react will watch for changes now when the component is first rendered the call back function passes to the use effect will be run this is similar to the component did Mount life cycle method in the class component if any of the dependencies specified in the dependency array change react will rerun the effect now this is also similar to the component did update life cycle method in the class component so as I said before here we have class did Mount class did update and class did unmount so these life cycle methods are used in the class component so here the next life cycle I’ll be explaining is component will unmount here when the component is unmount the cleanup function pass to the use effect when it will be run this is for cancelling Network request or cleaning up any other side effects that we created now that we will understand this use effect hook with a small example so I’ll go back to the visual studio code I will clean up the use State I will keep the react component and the export has default now we need to use the use State and use effect from the react so for that we will import use effect along with the use state from the react react package after the react component line so that I will just import inside the curly braces right use F and use state right in our component we declare a state variable data using this new state and and the initial value is an empty array so for that we will just write a function for that counter so for that I will be setting the constant values here and I’ll pass both width and the set width as I said the current value and the function that will be updated so here withd is the current value and I’ll set the state so now what does this line mean so here I have written this line right now this means that I’m taking the windows inner width so let us see for example I want the inner width of the browser and I need to design a web page where my grid needs to match it so I need to know the width of my system or the browser so that I’m taking the inner width of the browser now let us fetch the use effect I’m taking the function handle resize so we need to know the size of our window right so that is why we are using this function function handle now I will set the WID for window inner width here the set with function update this date when the browser window is resized now let us set the window uh event listener here use effect Hook is used to add an event listener to the window that is listens for a resize event and when the resize event is triggered the handle resize function is called for that we are writing a code here so for that window dot add event listener and I’m specifying here resize here as I said when the resize is triggered the handle resize will be called to update the width of the state in the new value of the windows inner R now here let us clean up the function to remove the event listener here now I will return here I will return the remove event listener here I’m specifying this window do remove event listener here the empty array at the end of the use effect is the dependencies it means this effect only runs once on the component mode right so here now I will return this also so I’m WR the windows width will be so I’m calling this width function here here the component returns a Dev that displays the current width of the browser right now let us check out the results here the window width is 614 now let us resize this here here as you can see if I resize the windows WID changed to 335 so if I again resize so it will change according to that so it will not change the height so as if we have just set only for the width the total window width of my system is 614 so if I resize so it will change according to the size we moveed to so I hope hope you understood the example with the use effect here some of the tips to practice this use case in a best way for that you need to First understand the purpose of the use case of the use effect hook here it is used to handle the side effects so as I said in the example such as the data fetching in a functional component and always you need to include a dependency array as the second argument to the use effect and this array should include any variables or state that the effect depends on here if a variable is not included in the dependency array that the effect will run on every render and you should be mindful of the order in which effect runs here this effects are executed in the order that they defined so it is important to consider that the order of your effects if they are dependent on each other and you should use the cleanup function provided by the use effect to remove any side effects before the component is unmount so this is especially important for the data fetching and subscriptions to prevent the memory leaks so as I did here in the example I did the cleanup function to remove the event listener right so like that and also you should keep in mind that the excessive use of use effect can lead to unnecessary re vendors and it can be slowed down your applications and also you can use the use context who instead of use effect when possible here the use context is a simpler and more efficient way to manage the shade State across the multiple components that is what we are looking next we will look into the use context here now let us see what is use context it is a kind of H that is used to consume the context in a functional component it is an alternate to the context type property or the consumer component that we used in the class component here when a component needs to access the context it can use the use contact hoop to describe to the context and retrive its current value the hoop takes the context object has it argument and Returns the current value of the context the component can then use this value to update its state or props the use context hook allows a component to subscribe to changes in context so that it can rerender when the context value changes so this is done without the need to pass props down manually through every level of the componentry which makes the code more efficient and maintainable here when a context value changes the react will re render all the components that are using that context this means that the component using use context hook will be rendered to which is how the component will get updated with the new context value now if I summarize the use context the use context hooks allows the functional component to access the context and the subscribe to changes in context it also eliminates the need to pass the property through the multiple levels of the component Tre eventually which leads to more efficient and maintainable code now let us see a small example so let us go to visual studio code and I will just remove from the function so default let us keep import Rea component from Rea here in import we will just import the create context with use context okay so now let us create a context with a default value for that I’m writing the const and theme context here we use this create context to create a new context called this theme context okay with the default value of light so I’ll keep the default value as light which is equal to create context to light right fine now let us create a function counter now let us use the context to access the current theme right so that I’m specifying the cons now the theme is is we are using the use context in theme context here in our example component we use the use context hook to access the current value of the theme context right so here we have light so we need to access this light in this theme context here we will return the div so let us specify the class name as uh theme right and let me write something like the current so we need to get the uh output from this theme so when the value changes here the value here will be also changed accordingly now here let me write a function called app and return the theme context dot provider value is dark so I’m specifying the counter over here inside the theme context right now let us see the output here as you can see the current theme is light right we access the value of the context in this case here the theme and we use it to set the class name of the div element and in the app component we wrap the element component with the theme context provider and set the value to the dark okay here now whether the value is provided to the context will be available to all the components that are wrapped inside the team context provider and all of them will be able to access the current value of the context by calling the use context and theme context okay now here some of the tips to practice the use context here to keep the context value minimal Only Store the values that are necessary for the components that are consuming the context and you need to avoid the storing unnecessary data as it can lead to unnecessary rerenders and performance issue and also you need to use the default values always provide the default values for the context when creating it in case that consuming the component does not have access to the context now you should use the use context for Global state so that it is shared across the multiple components such as the users authenticated status or the selected theme also you need to avoid using context for local state here use State hooks for local state that is specific to single component rather than using the context only update context when necessary you should only update the context when the value has changed to avoid the unnecessary rerenders and performance issues here you need to use the use effect hop to update the context the next we have the test context test the context value and update to ensure that they are working correctly here we use the test context to test the value that were updated correctly and whether it is working correctly now then we have the use multiple context so here if you have m multiple pieces of global State and that need to be shared here we need to consider using the multiple context to keep the state organized and easy to manage with that we will move on to use reducer who here the use reducer is a hook in react that allows for managing the state within a functional component here it is similar to use state but it is typically used for more complex State Management and the state red rer hook takes two argument a reducer function and a initial State here the reducer function is a pure function that takes the current state and an action and it Returns the next state the initial state is the starting state of the component State a component can call the dispatch function returned by the use reducer to send an action to the reducer here the reducer that updates the state based on the action and the current state and also the component reenders with the new state the use reducer is considered more powerful than us State because it allows for more complex State management such as handling the asynchronous actions and managing the multiple pieces of State at once in short the use reducer is a hook that allows you to manage the state within a functional component in a way that it is similar to how you would manage the state in a Redux store it takes two arguments a reducer function and an initial State as I said initially and Returns the current state and a dispatch function that can be used to update the state now with that let us look into a small example so let me remove from the import again let us import the use reducer package from react after that we create a reducer function that takes in two arguments that is State and action here which are the current state and the action that is being dispatched respectively okay so that let’s write const so initially I’m setting the value to count zero so initial state is count zero fine after that the function the function reducer State action after that I have switch case in that I will write switch I’ll write action type if that is the case then the case should be in increment then I will return the count to the state count + one if the case is in the decrement then I will return count State minus one then default I will return the state first let me write the code and I will be explaining you each and every statement here right so that first here I’ll write the function here as you know the use reducer hook returns a pair of values the currenty State and a function that updates it in our case we use the destructuring assignment to assign the state and dispatch right here we use the state count to display the current count in the page and in the button tag here for that I will specify the page and the button tag here for that I’m returning a statement so return here I’m writing in the count here count and the state count now let us specify the button for increment as well as the decrement here on click let us write the dispatch so this type will be in increment fine now for the same I will give for decrement right see here here I am giving the decrement so after that the div is closed so here the function that passes in the on click property to specify a function that will be called when the button is clicked so I’ll be showing that in the output page here the function that we have passed to on click is an arrow that function calls dispatch and it passes in the object that describes the action that should be performed here in this case the action type is either increment or decrement right so when the component is rendered it was initially the number is zero the count is zero so when the button is click in the increment so it will call the dispatch function with the type increment and the reducer function will receive the action and the state so that it will update the state and increment by one so see for example if I go to the output so if the button is clicked in the increment so the count will be two for example if I increment one so the count will be + one right so when the minus button or the decrement button is clicked so it will call the dispatch function to the decrement then the reducer function will receive the action and the state so it will update the state and decrease by the count one and the component will rerender and it will show us the output as minus1 so count minus1 so here keep your state and the action simple now let me give you some of the tips here you need to keep your state and action simple the use reducer is designed to handle the complex State and actions but it is important to keep them as simple as possible to avoid the confusions and make it easier to debug and also you should use the initial State correctly make sure to provide an initial state that is the same type and shape as the state in your reducer function and the use actions to change the state you need to use the actions to change the state in your reducer so do not modify the state directly as this can lead to unexpected Behavior also you need to keep your reducer function pure so what that your reducer function should be pure means it should not have any side effects and should not relay on any external state or variables so with that we will move on to the use memo use memo is a hoop that allows you to optimize the performance of your react component by only recalculating a value when one of its dependencies has changed now it is similar to the use effect hoop in that it allows you to perform a side effect but instead of updating the component state or props it returns a value that can be used by the component here the use memo hook takes two argument as previous hook sticks the first one is a function that returns the value you want to store and the second one is a array of dependencies the function is only called when one of the dependencies has changed if none of the dependencies have changed the previous value is returned instead of recalculating the value for example if you have an component that displays a list of items and the list is passed in as a prop you can use the use memo to only read ref filter the list when the search item changes instead of ref filtering the list on every render now let us see a small example so now let us go to visual studio code I just have import react component from react and I have exported the counter now let me import the hooks from the react so I’m importing use State and use memo right now let us just Define a functional component called counter okay so function counter now let us create the state variable for first name last name and H so that constant first is our first name then I will set the first name here I will use the use State same thing for last name and H I am giving a empty parameter over here so that it is dynamically updated when the user enters the first name last name and the H okay right now let us calculate the user object over here so now let us see this function will uh run only if the first name last name or the a state variable have changed so I’m giving the uh user also so const user by using the use memo so let us return turn the full name the full name consist of the first name and the last name and finally AG right in the array I’m just giving the first name last name and age return inside the diff I’m just giving the input value for the first name last name and the H here the component also uses the use memo here right so this hook can create a memorized object called the user so that is why we have specified the user over here and that combines the first name last name and the age the state variable into a single object with properties that is first name and the age the components then renders input field that allows the user to update the state variables and display the user object so that is what so here I will be giving the input values over here here first one is the first name on change so if the value is changed then the output should be rendered here in the age we have to type the number so the input value will be in the form of number right then let me give a paragraph inside saying the full name and the h now let us see the output so if I show you the output here I can type my name so here in the full name you will get uh the first name and this is the last name so for example I’ll type V so as you can see the full name I have written in the first name as T and the last name has v so in the code here here it should return in the name of full name is the first name plus the last name and the age right so here if you see uh in the place of first name I have typed only my first name and in the last name and in the place of H since I given in the input has numbers so it will tell you to increment or decrement or else you can even type the number so in place of age you have the number over here right for example 46 yeah and you can increment or decrement as you need so in this code the react functional component is called the counter right so it uses the react hook called use State and use memo to manage and update the component State and to perform a calculation based on the state here the component has three state variabl that is the first name last name and H so which are initialized using the U State now these State variables are used to control the values of three input field rendered in the component jsx that is these three input Fields here the component also has a user variable so here you can see the the user variable right here the function concatenates the first name and the last name the state variable to create the full name the property of the user object and the user age that state variable as the state property the second argument of the use memo is array of dependencies which is used to determine when the calculation should be rerun in this case the calculation will re run only if the first name last name or AG State variable has changed the component reenders and input field from each state variable and displays the full name and age property of the user object right with that we will move on to the tips for use memo use the hook called use memo when you need to compute a value that depends on or state but not change often always pass a function that runs the value you want to memorize has the first argument the function should take the props or state that the value depends on an argument and the use mve with the second argument an array of dependencies to tell that react which values the memorized value depends on so this will ensure that the memorized value is only recalculated when one of the dependency changes avoid using use memo in render functions as it can lead to poor performances instead you can use it in the component functions that are called before the component rerenders also you need to use the use memo with the caution when working with the large data set or the complex computations as it can cause performance issues if not used correctly and avoid using the use memo to store functions as they cannot memorize instead you can use the use callback hook for this purpose now let us see use callback hook use callback is nothing but it is also a react hook that allows you to optimize the performance of your react component by only recreating a callback function when one of its dependencies has changed it is similar to use memo but that allows you to store a value and only update it when the dependencies has changed but instead of storing a computed value it stores a call back function here the call back hook takes two arguments the first one is a call back function that you want to store and the second is a array of dependencies here the function is only recreated when one of the dependencies has changed changed if none of the dependency have changed the previous call back is returned instead of creating a new one for example if you have a component that displays a list of items and the list is passed in as a prop you can use the use call back to only recreate the function that handles the recreating the function on every render but it is important to note that the use call back is often used in the conjunction with the use memo when the dependencies are object or the function to prevent unnecessary rerenders and recalculations as use memo only recalculates the value when the reference to the object or functions changes now let us see a small example for use call back hook and import the hook packages from react that is I’m using the use state and use call back from react now the function called counter let us initialize the count and the increment value here right so that for here I’m writing the const so I’m I’m setting the count as well by use keys by use US state and the next one is increment I’m using the use call back function over here let’s set the count to count + one because we are incrementing it right so right now let us return with a Dev tag inside that I’m writing H1 tag so I’m telling the count value then I’m specifying the child increment after this we have the child increment over here as you can see right so that I’m creating a function over here called child inside that I’m just passing an argument call increment by returning a button with a onclick function increment right now in this example the parent component has a state variable that is count so as you can see here we have count this is the parent component and the call back function is the increment that increments by one so here the count plus one so as you can see this is the parent component plus incrementing by one here the child component receives the increment function as a prop and renders a button when click and it calls the increment function over here the use call back Hook is used to memorize the increment function passing in the count as a dependency this means that the increment function will only be recreated if the count State variables change so this can help to prevent the unnecessary rerenders of the child components when you run the code the output will be a increment button and a H1 tag saying the count is zero so when you click on the button the count will be increasing by one and the H1 tag will be displaying the updated count right so if you can see I’m clicking on increment and the number changes to two by increment + 1 so 1 + 1 is 2 okay so right now let us see some of the tips so here use the use call back when you need to pass a call back function as a prop to a child component and you want to avoid the unnecessary rerenders always you need to provide the dependency array has the second argument to use the call back this tells the react which variables the call back depends on and when it should recreate the call back and also you need to keep in mind that the dependencies you include in the array if you include too much or unnecessary dependencies it can cause the unnecessary rerenders and negatively impact performance and you need to avoid the use call back inside the loops or conditions as it can lead to unexpected behavior and hard to debug the issues and always you need to check if the call back function is the same using the reference equality operator before passing it to a prop so this will prevent the unnecessary rerenders of the parent component you need to be careful while using the use call back function with this the state or prop that are objects or array because these are passed by references not by values so if the call back depends on such variables it will be recreated every time the parent component reenders and you need to be aware that the use call back does not work with async functions because it cannot memorize the results of asynchronized operations always test your component with and without use call back to check that if it works has expected and that the performance improves you expect as visible right okay now let’s move on to the last hook in this session that is use layout effect now what is use layout effect use layout effect is a react ho that allows you to synchronize all layout changes to a component here it is similar to the use effect but it runs synchronously after all Dom mutations now this can be useful when you need to measure a Dom node or read its layout before making changes that affects its size or position also it should be used with caution as it can cause visual inconsistencies if not used correctly and also it is recommended to use use effect unless you have a specific use case that requires the synchronous behavior of use layout effect so you need to be careful while using the used layout effect and also importantly to note that the used layout effect should be used only for updates that are critical to the visual appearances of the component and that cannot wait until the next frame for all other updates it is generally recommended to use the use effect instead with the run asynchronously and does not block the main thread and also so it is important to remember that if you need to perform any side effects that involves the Dom such as adding or removing the event listeners you should do so inside the use layout effect instead of use effect this is because the use effect runs after the browser has painted and may cause unnecessary layer thrashing if it updates the layout of your component okay with that let us move on to the example now this code is a simple react functional component that uses the use layout effect and the use state so here it uses these both hooks to measure the width of an element and display it in the screen okay the first code Imports that the layout effect and the use State and the use ref from the react Library right here the U state is a hook that allows you to add the state to a functional component in this case it is being used to create a state variable called WID and that will store the width of the element here the UST State hook also returns a set width so that can be used to update the value of the width State variable here now the use ref is a hook that allows you to create a reference to a Dom node so in this case it is being used to create a reference to a div element that will be used to measure the width of the element over here here the used layout effect is a hook that allows you to synchronize and apply the layout changes to the component so it is similar to the use effect as I mentioned earlier but it runs synchronized after all Dom mutations so this can be useful when you need to measure a Dom node or read its layout before making changes that affects its size or the position so this component start with the div element with the ID my element and within the WID State variable is displayed and use layout effect is then invoked so inside the hook the code first gets a ref reference to the element with the ID called my element using the document. get element by ID inside the my ID this used layout effect Hook is then invoked inside the hook the code first gets a reference to the element using the ref variable called ref do current you can see here this ref dot current then it uses the get bounding light ring right this method to measure that the width of the element and assign it to the variable width after that the set width function is invoked with the width variable as an argument so which updates the state variable with the width of the element here the used layout effect hook also accepts a cleanup function which is a function that runs when the component is unmounted or the effect is being rerun so this is that function okay so the cleanup function will also display the cleanup in console so when you inspect in the console then you will get to know about it right and also you need to keep in mind that uh it is important to note that the used layout effect hook should be used with the coction as I mentioned so as it can cause the visual inconsistencies if not used correctly so it is recommended to you to use the use effect unless you have a specific use case that requires the synchronized behavior of the use layout effect and it is important that if you don’t provide a dependency array the effect will run on every render so which could lead to a performance issue so it is better to provide a dependency array with the values that the effect rely on so that it only runs when those values changes okay so it should not run whenever the small changes happens the whole program will run so right in this example an empty dependency array so this is the empty dependency array so it is passed to a use layout effect ho so which means that it will only run the code once when the component is first rendered so in this example instead of using the document. getet element by ID to find the element it is passed to a reference to the element as it uses the ref dot current dot here the ref dot current dot get bounding client R so to get the width of the element so let us see the output over here so we have to run so after that so as you can see the width of the element is around 613 Point 44 okay so let us inspect this here you can see as I mentioned you will get a console here we have console right as you can see here the cleaning up function as I said in the program right here you will get the clean up function here so inside the console you will get the cleaning up [Music] we should know why to use Redux react is one of the most popular JavaScript libraries which is used for front-end development it has made the application development easier and faster as it follows the component based approach where the data flows through the components basically react follows unidirectional data flow that is data always flows from parent to child component where child component can never pass data back up to the parent component as you can see on the screen the colored circles are representing the components where the upper component is the parent while lower ones are the child or subcomponents the view cannot interrupt in the data flow so data Flows In unidirectional fashion here data flows from parent to child react does not provide any way for direct component to component communication although react has features to support this approach but it is considered to be a poor practice as it is prone to errors as you can see on the screen a child component can never pass data back up to the parent component and here is the catch so the question comes is how can two non-parent components pass data to each other this is where Redux comes into the picture as you can see in the picture a store is a place where you can store all your application State together now the components can dispatch State changes to the store and not directly to the other components then the components that need the updates about the state changes can subscribe to the store so we can sum up into the points as produx offers a solution of storing all your application state in one place called a store components then dispatch State changes to the store not directly to other components and then the components that need to be aware of State changes can subscribe to the store Redux helps you manage Global state that is actually the state that is needed across many parts of your application Redux separates the application data and business logic into its own container in order to let react manage just the view react gives only the view in MVC model where MVC stands for model view and controller so we can say react is just the view and to control the data flow we use Redux as a data flow architecture as you can see on the screen react is responsible for the view that is the web application on the browser and Redux controls the data flow now let’s understand understand what is Redux Redux is a pattern and library for managing and updating application State using events called

    actions Redux separates the application data and business logic into its own container in order to let react manage just the view it’s an application dataflow architecture Redux was created by den abov and Andrew Clark around June 2015 it was inspired by Facebook’s flux and influenced by functional programming language Elm it got popular very quickly because of its Simplicity small size as of 2 KBS and great documentation this is the basic idea behind Redux that a single centralized place to contain the global state in your application and specific patterns to follow when updating that state to make the code predictable so basically the patterns and tools provided by Redux make it easier to understand when where why and how the state in your application is being updated and how your application logic will behave when those changes occur Redux guides you towards writing code that is predictable and testable which helps to give you confidence that your application will work as expected now let’s look at the principles of Redux Redux follows three fundamental principles where the first one is single store or we can say single source of Truth the second principle is state is always read only and the third one is changes are made with pure functions or reducers now let’s understand these principles in detail starting with the first principle that is single store so when I say single store it means that all my applications state are stored in a single immutable store as with only react unidirectional data flow direct communication between components is not allowed now the state of the entire application is stored in an object or state tree within a single store components state is stored in the store and they receive updates from the store itself so components dispatch something to the store and then the other components when they get to know that something has been updated they subscribe to store now let’s move to the second principle that is the state is read only which means the only way to mutate the state is to emit an action which describes the user’s intent hereby muted I mean is to update so we can say that we can change the state by triggering an action which is an object describing what has happened as you can see on the screen here the action is no action and when the action is switch on the bulb is getting lighter now let’s talk about the third principle that is change using only pure functions in Redux pure functions are called as reducers the reducers are used to indicate how the state has been transformed by action the reducers or pure functions take two parameters as input which are the previous state and the action so when it takes the previous state it gives us the new state as you can you can see in the picture the previous state is that the bulb was not on and then it has been worked upon by the reducers and then we get the new state that is the bulb is on now I’m going to talk about the components of Redux Redux has four components action reducer store and view so let’s understand these components in detail starting with the action action of the plain JavaScript objects which are payloads of information for the store so basically the only way to change the state content is by emitting an action as we have already talked about it so here action means plain JavaScript object which are the main source of the information which we use to send data and data could be user interaction internal event like API call or form submission we can send these from the application to the store and then the store receives this information only from the actions and then we have to send the actions to the store by using store. dispatch for example here as you can see we Define the type as ADD too and then we can Define the parameters as Text Now actions are created by action creators some of the points to be considered in actions are that it must have type property that indicates the type of action being performed they must be defined as a string constant and you can add more properties to it now talking about the action Creator action creators are the functions which create actions and they takes in the message converts it into into system understandable format and returns a formatted action object action creators are the normal functions that return the function and to call this action anywhere in the application we can simply use the dispatch function where we can Define dispatch and then we can Define it to do add to do text as a part of dispatch method so here we can add dispatch after action we have reducers basically actions describe the fact that something happened but they don’t specify how the applic State changes in response so here comes the job of reducers reducers are pure functions which specify how the application State changes in response to an action it is based on the error reduced method where it accepts a call back a reducer and let us get a single value out of multiple values so we can Define reducers as pure functions which specify how the application State changes in response to an action some pointers to be considered for reducers are they do not change the value of the input parameter they determine what sort of update needs to be done based on type of the action and returns new values it Returns the previous state if no work needs to be done the root reducer slices up the state based on the state object keys and passes them to their respective specialized reducers reducers don’t manipulate the original state passed to them but make their own copies and then updates them now let’s understand the reducers with the help of a simple example here we have defined whole function reducer with the arguments initial State and action then we can use Simple switch action type in the case at Todo we are returning the object assigned to State and then here we have a to-do list then in text we are going to work on the action. text and then completed should be false that uh is what we are going to return the state itself so here we are taking help of previous state action and new state as part of reducer component we should avoid the following things inside a reducer that mutating its arguments that we should not change the arguments inside a reducer we should not perform side effects like API calls and routing Transitions and we should not call non-pure functions like date. now or math. random now moving on to the star component of Redux that is store store can be defined as an object which brings all the components to work together it calculates the state changes and then notifies the root red us about it so basically store can hold the application State and provide some helper methods to access the state dispatch actions and register listeners so the entire State object tree of an application is saved in a single store here we can pass the middleware to the store to handle processing of data and to keep a log of various actions which can change the state of the source and all the actions return a new state by the reducers here in the example taken we have created a store from Redux where we can import to-do app from the users that we are going to create and then we are going to use the store component as a part of a stores with a store the data State can be synchronized from the server level to the client layer without much difficulty this makes the development of large applications easier and faster store is responsible for holding applications State allowing access to State via get State method registering listeners via subscribed listener allowing the states to be updated via dispatch action and also it handles unregistering of listeners VI the function returned by subscribe listener now let’s talk about the last component view view is nothing but the thing which is displayed on the screen and in formal terms we can say view displays the data provided by the store as you can see in the picture the store provides the data which is displayed as view on the browser screen smart and dump components together build up the view smart components are the managers who are are in charge of the actions and pass down a function via the props to the dump components and dump components provide information to the smart components if any action is required they receive them as props and use them as call back now let’s understand how the components in Redux are set up first of all we have to get the store ready then we have to set up the communication amongst the components and then we have to prepare the action callbacks let’s understand it with an example so here we have action Creator producers views store provider and root reducer component so these can be called as the various roles involved in setting up the components and then ultimately in the data flow now let’s see how the communication will happen among these components so first step is to get the store ready here in the example the store has been hired and the reducer team has been asked to help the store out so here in the example the store has been hired and the Reger team has been asked to help the store out then in the next step that is setting up the communication between the store and other components we can see the example where the root component says to the provider that this store is hired and now the provider has to set up the network to keep the components updated and here’s the view part so view will get connected to the latest updates to display the user now the final step is to prepare the action callbacks so here the view part has to make it easy for dumb components to understand it has to bind the action Creator and the dispatcher so that the dumb component can just call the call back as we know if something has to be updated as a store is immutable an action has to be triggered which can be done by action. Dispatch method now let’s understand the data flow that is how data will flow among all these components of Redux so Redux architecture is concentrated on a strict unidirectional data flow in an application all the data follows the same life cycle pattern making the logic of your app more predictable and easier to understand it also encourages data normalization to ensure consistency the picture represents the flow diagram of the Redux application which contains all the components which we have discussed now let’s understand the data flow with the help of this example step by step starting from here where the name is John we want to update it with something else so it will start from action Creator start starting with the step one so the action type is name update value is John this is available on The View and to change it an action has to be triggered now the Second Step where the store will get informed by the action store has the current state tree and now it will be passed to the reducer to calculate how the new state Tre should look like so in the third step the reducers which are the pure functions will get the previous state or previous State pre and action as input and will provide the new state now in the fourth step the root reducer will provide the sliced state tree to other reducers in the fifth step the other reducers will copy the sliced data and will update it and it will show the root reducer that how the sliced state tree will look like and in sixth step the store will be updated and then store will inform the provider with the new state tree or the new state which will complete the step seven and step eight and finally in the step nine the view the new state tree will be updated which we can reender as the component tree so I would sum up the entire process in the following brief steps starting with initial step a Redux store is created using a root reducer function the store calls the root reducer once and saves the return value as its initial State when the UI is first rendered UI components access the current state of the Redux store and use that data to decide what to render they also subscribe to any future Store updates so they can know if the state has changed talking about the updates something happens in the app such as a user clicking a button the app code dispatches an action to the Redux store like dispatch and the type could be counter or increment the store runs the reducer function again with the previous state and the current action and saves the return value as a new state the store notifies all parts of the UI that are subscribed that the store has been updated each UI component that needs data from the store checks to see if the parts of the state the niche have changed each component that sees its data has changed forces a reender with the new data so it can update what’s shown on the screen now we will see how to use react with Redux so to install this stable version using npm we can use the command npm install Redux and to yarn we can use the command yarn add Redux react bindings are not included in Redux by default so you need to install them explicitly using the command npm install hyphen hyphen save react hyphen reduct you have to add these dependencies along with Babel react and webpack now I will show you a small demo of using react with Redux so let’s start with a demo and this let’s uh first see the structure of the whole project so we have created these folders actions components containers reducers and the main file index.js so these all are the components which we have seen while understanding this reactjs and Redux so starting with this main file so index.js is always the first or the main file of a react Redux application of project so in this we are using a special react Redux component called provider as you can see here so this one is the special component and it makes the store available to all the container components in the application without passing it explicitly so we need to use it once when to render the root component so here you can see we are rendering the root component with the name app so here we are using provider so we have to use it once while rendering the root component now we have created this file by importing all the dependencies required you can see here with the help of import statement we are importing all the dependencies which are required it could be like Redux react Redux or the components or the reducers and all the these things now as you can see here all the dependencies react react Dom and here this react Dom that is actually the data object model which you would have learned in JavaScript so in this file we are calling the utility called as provider to call Root component and now let’s start with the components so here you can see the folder components so these all are the different components which we have created so these components could be presentational components as well as container components so most of the time we use presentational components but sometimes we generate container components as well to connect to the redu store so first of all we’ll see the presentational components so here we have to-do list.js too. JS link doj foo.js and app.js and here this app.js is the root component okay so starting with the to-do list.js so this Todo list.js component or the file contains the to-do list which is showing the visible todos okay and basically these todos are the arrays as you can see here these todos are nothing but the arrays which have been created using three properties you can see here ID completed and text and here on click you can see here on click is an event or a function which is taking ID okay here is taking ID as a number which is a call back to invoke when a to-do is clicked now talking about the other file that is too. JS here it shows a single to-do item here is a property you can see here property types okay so it has a property type which has the event on click and completed and text which shows the completed todos now we have one more component that is link. CHS so it has a link and it will show all the completed todos now then we have the footer. JS here you can see they have different links which are used for the filter as you can see with the help of filter link it allows the user to change the currently visible toos when we will see the output of this application then we will see how we can change the to-do list items with the help of this filter link now talking about our root component that is app.js it is calling all the other JS files which we have created as presentational components you can see here like this add to-do visible to-do list and footer so you can see this footer is also one of the presentational component over here so it is calling this as well and you can see these visible to-do list and add to-do all these are the container components so this root component will call both the components presentational as well as container so as you can see here import as well as the export method okay so initially we have imported presentational component like footer and the container components like add too and visible Todo list now you can see here when you will just over your mouse over here you can see from where these components are coming so you can see from the SRC folder and the container folder we are getting this visible to-do list it is a container component and here for footer you can see it is coming from the components folder this foo.js so this is a presentational component now here we know we require the container components to connect presentational components to Redux so let’s see the container components now here inside the container folder we can see the container components present so these are the visible to-do list.js filter link. JS and add too. JS so starting with the visible to-do list.js which we have created here you can see this file is required by too. JS file which is a presentational component so here we have too. Js which is a presentational component it will require this container component that is visible to-do list.js this is the basic idea and it helps to subscribe to the Redux store wherein we have map state to props here you can see this map state to props which is a special function available in this import connect from react Redux here you can see in this connect function this map state two props is present so it is a special function which will help to subscribe to the Redux store now one thing to pay attention is to import connect function here as you can see while importing we have imported a connect function as well from react and Redux Library what it does is it provides the optimization which avoids unnecessary reentering of the application here we are calling the function with the help of get visible to-do utility so we have a switch case in which we have three cases all these three cases are actually the ACs which are show all then show completed and then we have show activ these are actually the todos the action is to show all to-do items then show all completed to-do items and then show all the active to-do items now talking about this filter link. JS here it is a container component which is rendering the links by dispatching an action as you can see over here with the help of dis map dispatch to props utility which we have got from this connect function which we have imported from react Redux Library it is rendering the links by dispatching the action and now talking about this add too. JS here this is returning the HTML part of the application as you can see here we have input value we have the button submit button so when we will see the output there you can see the HTML part which will be visible on the screen so that part comes from this add too. JS file which is actually one of the container components now talking about the actions now you can see here the actions here action is also one of the major component of our Redux application so here in this actions index.js the actions are add too then set visibility filter and toggle to- do now let’s talk about the reducers after actions we’ll move to the reducers and in the reducers we have different reducers present over here index.js too. Js too. spc. Js and visibility filter now in this index.js we are making use of combined reducers utility and we are combining all the other reducers present as we have seen in the example earlier that we have a reducers team where multiple reducers are the part of that team and they together work so here with the help of this combined reducers utility which we have imported from this Redux library with the help of import statement we are combining in the other reducer functions now as we know these reducers are basically the pure functions so other reducers as you can see over here these reducers are nothing but the pure functions which are returning something based on the action so here you can see they are taking the action with the help of the ID and then they are returning something with the help of the case so they are returning the states as we have understood earlier from the examples and we will make use of of all these reducers here by combining them now let’s talk about the output of this application I hope this structure of our Redux application is clear to you all you can create any of the applications on Redux and now talking about the output so here in the output you can see we have a text box and then the submit button and the other buttons also we will see how they will be used now the basic idea of this application is to create a Todo list okay so here we will add some items which will be treated as the items of to-do list so we can add multiple items in this to-do list and then we can categorize them with the help of clicking on those items that whether they are active or they are completed right now we don’t have any item in this list so let’s insert something so for example we are entering to subscribe the adura channel so when we will click on ADD to-do this item has been added in the to-do list for example we can insert like the video one more and for example we’ll write like writing so all these three items I have entered in this to-do list when we have clicked on all so we can see all the items of to-do list when we will click on the active so we have all the active to-do list items and in completed we have nothing because we have not completed any of these to complete it we’ll just click on any of these so to subscribe I have just clicked on it so this item has been completed now when we will see in active items we have only two and in completed we have the one which we have already completed by clicking on it so this was the output for this application which we have [Music] created so the first factor that we’re going to talk about is the application types or the usage react is used to develop web applications whereas react native is used for mobile application development some examples of web applications created using react are Facebook Netflix New York Times Yahoo mail Etc on the other hand react native is used in mobile applications such as Instagram Facebook ads manager Bloomberg Airbnb Uber Eats Etc setup and bundling react native is a framework of JavaScript and it comes with all the essentials that you will need to set up and for the development of your application react on the hand is just a library of JavaScript therefore when you use react you will need various other tools for setup and development live reload live reload or hot reload as mentioned earlier is a feature that allows you to code as well as see the modifications in your application simultaneously react native supports live reload whereas react does not template rendering both react and react native use jsx for the development of views or the templates but react is much better better when it comes to styling your application’s UI using CSS react native on the other hand makes use of native platform apis learning curve even though react is not very difficult to learn react native is much easier this is because you can make use of readymade components and react native while for react you will have to quote them yourself so we’ve done a head-to-head comparison between react and react native the answer to which one is better among the two depends on the type project that you’re creating if you are focusing on creating the UI for a web application then react is what you need but if your project is going to be a mobile application then you can go with react [Music] native angular was developed by Google and its first release dates back to 2010 the first version of angular was also known as angularjs on the other hand react was developed by Facebook in the year 20 13 so coming towards the architecture of these Frameworks angular and react both are component based Frameworks but angular makes use of typescript and HTML whereas react which is a user interface Library makes use of JavaScript and jsx jsx is nothing but a syntax extension for JavaScript the latest version of angular that is angular 9 was released on the 7th of February 2020 one of the core features of this major release is the angular IV to know more about the angular IV you can check out the angular 9 video and blog from Eda whose link is mentioned in the description box below talking about react the latest major version of react is react version 16 the rendering process angular performs client side rendering however it can be rendered on the server side as well using nodejs on the other hand rendering is done on the server side in case of react websites built using these Frameworks YouTube as we all know is the world’s largest video sharing platform owned by Google and this is built on angular another very popular online payments application website PayPal also runs on angular other popular websites that use angular are Walmart which is a multinational retail Corporation and gmail which as we all know is an email service platform I’m sure after listening to this many of you would have felt wow angular is amazing but let me tell you guys that react is nowhere behind Facebook is the developer of react and yes Facebook makes use of react as well other popular applications such as Instagram which is a photos sharing platform and WhatsApp which is a crossplatform messaging app Airbnb where you can book your stairs for your vacation are also built on react so moving on towards the licensing of these two Frameworks both angular 9 and react 16 come under the MIT license MIT or the Massachusetts Institute of of Technology license is an open-source license sometimes it’s also called as the BSD style license and it has minimal software redistribution requirements the DM or the document object model angular makes use of real DM while react uses virtual dor the real dor updates the entire tree structure for HTML tags it does not make much difference in a simple application but if you’re dealing with a large amount of data requests on the same page it affects the performance as well as the user experience hence real dorm actually offers low performance with complex and dynamic applications at times real domor becomes extremely difficult to handle because the whole tree data structure is updated even if a minor change has been made virtual dor on the other hand has its components attached this gives the comfort of navigation within a website virtual Dom is also a node tree that lists out elements and their attributes as objects reacts vender function creates a node tree out of the react components then it Updates this tree in response to the mutations in the data model caused by various actions done either by the user or by the system virtual dor is not browser specific and it is lightweight it is provided in react package for free and eliminates the issues of slow performance of real dor having said this I’m sure you would have understood that virtual dor is better than real dor data binding angular uses two-way data binding event binding and property binding in event data binding angular allows you to bind events along with the methods property binding of angular will allow you to pass data from the component class and set the value to given element at the user end property binding also allows you to control elements property two-way data binding is a very important feature of angular with this angular allows you to make changes from the views to the models and from the models to the Views react unlike angular allows one-way data binding here the UI elements can be changed only after changing the model State the developers however cannot alter the UI elements without updating the corresponding models a great advantage of using the one-way data binding is that throughout the application the data flows in a single Direction which gives you better control over it this makes our application more flexible and leads to increased efficiency so talking about the latest features of angular 9 and react 16 angular 9 has a number of new features which are compilation of application with IV is default in angular 9 your angular 9 application is compiled ahead of time this means the angular’s aot compiler will compile all the HTML and typescript present in your code into JavaScript before your browser downloads and runs it this conversion takes place during the buildt process itself and it also also includes type checking angular 9 requires typescript 3.7 any lower versions are not supported TS lip or the typescript runtime library has also been made a pure dependency rather than a direct one earlier this library was installed automatically but now you will have to explicitly add this using npn or Yan react version 16 allows you to build great user experience models with concurrent mode and suspense concurrent mode is a feature that helps in binding apps faster with great user experiences that can help developers achieve their goals suspense is also a powerful tool for carefully organizing An Elegant loading sequence with a few well-defined states that progressively reveal the content the next very important feature is that react allows you to easily create Dynamic web applications and mobile applications react also provides support for custom Dom attributes instead of ignoring unrecognized HTML and SVG attributes react will now pass them through to the Dome this has the added benefit of allowing us to get rid of most of react’s attribute white list and it helps in reduction of the size of the application react as I’ve already mentioned earlier has a single way data flow that offers a better and streamlined data overview in react version 16 there is an increase in productivity that helps in maintenance of the react project reusing components is the major advantage of react you can start with the usual components like checkbox button Etc once this is done you can move to rer components which is comprised of internal logic which makes it easier to manipulate and Define objects that are used this also ensures the consistency of application and facilitates the code maintenance react version 16 also provides better server side rendering and error handling in this version the server is completely Rewritten and it is very fast it also supports streamlining so you can start sending bytes to the client faster so now moving on towards the next comparison factor which is the speed and productivity talking in terms of angular earlier angular was heavier and a little slower compared to react but now thanks to the angular CLI that the app size of angular has been drastically reduced and offers enhance development experience the angular CLI empar in creating a workspace and Design functioning applications quickly it also empaths in producing components and services with on line commands angular CLI ensures the clean coding feature of typescript before I start the discussion over react let me just tell you what is reduxx rux is an open-source JavaScript library for managing the state of the application it is most commonly used with react for building user interfaces so coming towards react the development speed and productivity slightly get affected due to the involvement of thirdparty libraries like reduxx however react is easier lighter and faster to code when it comes to small projects but for large projects typescript is preferable as it contains numerous features and components therefore angular has an edge over react when it comes to speed and productivity deployment earlier it was complicated to deploy an angular app but now thanks to angular Firebase angular 9 has officially added support to Firebase and angular apps and therefore angular apps are now easier to deploy to Firebase react as I’ve already mentioned earlier is lighter and the size of the application is smaller therefore it becomes easy to deploy the applications created using react these applications are usually deployed using node.js the learning curve learning curve in angular is quite steep as angular provides numerous features options and components for react the learning curve is easy as react is relatively small library and has fewer Concepts to learn when compared to angular and for those who want to learn web development quickly and the project requirement is not too large can go along with react so now coming towards something very important and interesting which is the market Trend the numbers that you see on the screen are taken from Tech Trends website according to Tech Trends there is a close competition in the job market for both these Frameworks however angular holds a slight upper hand overall moving on towards the final factor of comparison which is community support according to the 2019 stack Overflow survey it is clearly shown that react has stopped among the web Frameworks making react the most loved and supported framework by developers however angular is not far behind as it has good developer support by Google both these Frameworks have very good Community Support [Music] now let’s start with the realtime projects which we are going to discuss in this session so as you can see on the screen as well we are going to discuss this pick it up an e-commerce app chatted chit that a chat app fabook a social media app show it off a video sharing app short it out a URL shortener and groov on a music streaming app so let’s just start with this starting with pick it up an e-commerce application I think most of us are very much familiar to e-commerce apps as we know an e-commerce app allows users to add or remove items from a shopping cart view the card and check out using different payment methods so for inspiration you can check out some simpler storefronts like a Shopify storefront as well as massive retailers like Amazon or Walmart now you might have question that how to build this so to build this you can start with creating the app with create react app and add the stripe npm package plus use shopping cart to easily handle payments directly with strip checkout build a node API to handle creating sessions with a strive and then you can deploy it the back end to Heroku front end to ntif fly or you can deploy both on Heroku as well now moving on to the chat app that is chitted and chat that so whether it’s a mobile application like WhatsApp or Viber or a productivity tool like slack or Discord all of these use some kind of realtime chat app it could also be part of a chat widget within a website where customers can directly talk with the site owners now as we know all chat apps allow users to send messages to others in real time react to messages show when they are online or offline for example you can check out slack messenger Discord crisp chat Etc now answering the question of how to build this app so we can start with creating the project with create react app then use a service like Firebase or graphql subscriptions to create and get realtime messages then we can add reactions to message with Emoji using the npm package Emoji M then we can deploy to the web using Firebase tools now moving on to favebook a social media app the app you’re likely most familiar with is a social media application in many ways it’s similar to a chat app but expanded to a larger community of users these users can interact with each other in different ways so a social media app allows users in such a way that they can follow one another to receive their posts add media like images and videos to share with others and interact with post such as liking or commenting on them for inspiration you can check out some real-time examples like Facebook Twitter Instagram Etc now answering the question of how to build this so we can start creating the front end with create react app and creating the back end using a node API then we can use a database like postre SQL or mongodb along with an OM like Prisma of postre SQL or of mongod TV then we can use social authentication with Google Facebook or Twitter using OD zero react or passport.js then finally we can deploy it deploy the backend to Hoku and front end to nlii now let’s move on to show it off a video sharing app a video sharing app is probably the most Broad category as video is used across so many different apps and in many different ways you have video sharing apps like YouTube which allows you to search any browser and look for any video that you could imagine that users have created also Snapchat give us the ability to watch videos from other users that are recorded in a much shorter and more accessible format and they are more oriented around interactions such as likes and Views now let’s see how to build it so we can create the app with create react app and then we can create the back end with node or Express then we can use cloudinary for image and video uploads to the cloudinary API then we can use a database like postre or mongod DB along with an or like Prisma of postra or of mongod then finally we can deploy the back end to Hoku and front end to netlify or we can deploy both on Hoku as well now let’s move on to short it out a URL shortener a URL shortener is basically a simple tool that takes a long URL or the link and turns it into a short URL as we know or you might also not know that URL shortener with support for custom domains allows users to shorten the URLs manage the links and view the click rate statistics for inspiration you can check out some real word examples like cut bitly Etc now let’s see the steps to build this application so create the app with create react app then create the back end with node or Express and you can use a database like postre SQL or mongodb and then we can deploy this to the web using Firebase tools now let’s see groov on a music streaming app just as react applications are perfect for serving video content they are also great for streaming media like music music apps have a similar structure to video sharing apps and may or may not allow users to upload their own music but they do allow users to listen to music like songs comment on songs or even purchase the music even music streaming app can combine elements of a video sharing app as well as an e-commerce application for inspiration you can check out the regular music apps to which many of us switch to almost daily like Spotify SoundCloud Pandora Etc now let me give you an idea how to build it so create the app with create react app then create the back end with node or Express and use cloud for image and video uploads to the cloud API then we can use a databases like post SQL or mongodb and then we can deploy it to the web using Firebase tools now we have discussed about some interesting and full-fledged projects of reactjs now let’s see some small projects which could be a very good good source of enhancing the Practical knowledge of reactjs for beginners there are many example projects created by the react Community now we will see some of the projects that use react without third-party State Management libraries so starting with the calculator it is implementation of the iOS calculator built in react in this you just have to create an UI which can perform mathematical calculations talking about Emoji search react app for searching Emoji so everyone in daily life uses some or the other chatting app where we can do without appropriate emojis or the emoticons so you can just create that emoji search feature using reactjs talking about snapshot a photo gallery with search we can search particular picture with Associated keywords or tags and that’s we need to do in a snapshot using react talking about the image compressor and offline image compressor built with react and browser image compression many of times we need to compress out images to upload somewhere or for storage and every time going for online tools not a good idea right so just create an offline tool with the help of react CHS so these were some small projects which can be created using react JS now let me just summarize it so react GS developers have a bright future ahead as the technology is in Ed in several Industries in fact as opposed to other web development Technologies the react developers are now paying the most with react one can function both on the client side and the server side it facilitates the development of larger applications with its portion and data patterns that improve readability thanks to its versatility increased performance and improved usability features it is an outstanding front-end development program which can be used to create as many many Innovative projects as possible this testing is a very important part of your application because when the application goes live we always have to test our application to make sure it’s working fine because if something got break at the end of the deployment on real time it is very difficult so we have to make sure everything run very good so here software testing is a process to evaluate the functionality of software application with an intent to find whether the developed software met the specific requirement or not and produce of bug free products it’s very important part why should you perform testing cost of fixing the bug is larger if testing is not done at early stage once the application deployed it become very difficult to handle so we have to make sure that we should get it on the early stage only we try to fix that to produce good quality product to make software application defect free to check if the behavior of application is same so the testing also do one more thing that testing help us to verify that the thing we expect is same as it’s there or not to check if the behavior of application is same in development and production environment the type of testing unit testing functional testing and integration testing unit testing unit testing is used to test a small piece of independent code unconcerned with how they are wrapped in your application to prevent regression easy to pinpoint and fix the problem if take longer to execute it likely the code under test is much more complex it should be popular tool to perform react testing is just an enzyme so basically unit testing is more like the way the piece of a code that you right you want to test that code is basically come under your unit testing functional tests are made against combination of many units they use any number of external object or system like database UI security as it testing that how as a product is behaving take longer time to execute the unit test functional test represent major release whereas unit test represent only minor change due to which they’re expected to change less often than a unit test when user entered username and a password and click on send that user will be logged in we can easily see that this function group will compromise for many unit test one for validating username and one for handling a button and so on and an integ testing we ensure system application working correctly it can execute only with the realistic involvment like real database server and other system which like to Target production envirment it is used in case you need to test separate system like database and application it is lower than test say other test and is complex to write a functional test May successful test and ability to idle system to open help dialog box but with integration testing with a new browser or other runtime it found that expected functionality is not achieved test application using zest and enzyme so what is zest zest is a fast testing framework it act as a test Runner assert library and moing library and whereas enzyme is a JavaScript test utility for react that make it easier to assert manipulate and derse your react component output so enzyme provide additional utility methods for rendering a component finding element and interacting with element so basically the component testing or the snapshot testing the one we are talking about is actually achieve using enzyme also on the other side if I talk about create react application setup come with bundle with zist generally what happen when we start writing a test cases we look for a testing but basically your react script package that you have created or the sca folding that you have created is actually come with the zest package inbuilt so you don’t have to install a zest but apart from that we have to install certain other things so now we have to a test with the say snapshot integration with reducer so let’s perform that this is our application that we are working in the Redux on this application I’m going to do some testing first of all I’ll open that in vs code let’s go there now particularly in the vs code so I’ll open our folder and we have to install certain packages for this although as we know zest is by default in built but apart from zest we’ll install certain packages so first of all let me open our folder our application is already running so I’ll stop that and let me install some package there with my command prom I’ll open that I’ll stop it manually and first of all you have to install npmi react test renderer and we need enzyme adapter react so I’ll write enzyme adapter react 16 apart from that as zest is by default there we just need one more enzyme so we need three package one is enzyme one is enzyme adapter react 16 and one is react test render so we install that now while it’s installing we’ll proceed with our next part now it install so we can go back to our application here whenever we have WR any test case so in the SRC folder we have one test folder I’ll do one thing I’ll delete this test folder and write a fresh test folder for us and the test folder should be name as underscore uncore testore uncore now here first of all let’s do a oneof a component testing so if we go back to our component we have one footer component let’s test this component we’ll verify that is that component is as expected or not what we’ll do we’ll make a one Json tree for that and then with that Json tree we’re going to use it it should be a part of our test folder component. test.js so remember one thing your file name should always add with means have test between that and see the color difference also there because it detected that’s a test code now you have to import react here import react from react then you have to import footer first of all from dot slash at least should be do do slash it’s a twofold route component slash footer then we’ll import create that is coming from react test renderer now what we’ll do is we’ll let have one describe keyword so we’ll describe what this test Cas is all about I’ll say it’s a snapshot test for footer now after that we’ll call that function Arrow curly braces we WR test it should be test and we’ll write testing footer anything you can say here it’s a name by which we test what this test case all about after that bracket Arrow curly braces we’ll say let tree equal to create so create footer we’ll make our one Json of footer then after that what is expectation my expectation is 3.2 Json to match snapshot if it match snapshot test case pass else test case fail to match snapshot like this now how to run it just go back to a command prompt and simple run a command npm run test if the test case pass it will show you pass else it fail if the test case pass it is see automatically pick that now spelling mistake is there see it automatically able to pick my test file now it’s running test case pass and your snapshot created in case if I go back and make change in a footer say urea n anything now the test case will fail because it’s not matching the required criteria if I go back and make it back it will work suppose your requirement is that suppose requirement got changed now I want to update my test case because it’s once created it keep on failing so what you can do is as you have this test you can add the update test like this test update upate react script test and update snapshot the second way that you can do now here I’ll add one more test case I’ll say one we did for our component test now we’ll do reducer so I’ll pick that test case and I’ll walk you through how exactly it work now I have a more test for reducer in this I import reducer first of all see what reducer is returning we have to run a test case according to that right now my reducer is returning article and gallery and I test case expectation is same it’s say initial State should be article and gallery later on when we actually pass that particular I’ll say action it should return array so how exactly we can do that so this is where are two test case One initial State one when we pass the action if I go back and I run this see this time three test case and all three pass as it returning me object initially after calling action we got array so now we’re going to talk about maintaining code using G see what happen when n number of developer are working in the application everybody have to sync their code because it’s not possible like one day we give one folder to someone and then they will update that folder they give us back it’s not possible the reason for that is till what extent you keep on doing like this you always have to work in the way that you always upload the code somewhere and those who need the code they will download the code and the code should be keep on in syn now to achieve this functionality we use the GitHub so with the GitHub it become in the way that we can share our code very easily so Version Control is one that record changes for document computer program large website and other collection of information over time it allow multiple user to manage multiple revision of same unit of information it is used to maintain the record of different versions of code the most popular tool used as Version Control control is git why should we use git git is a open source distribution control system for tracking change in source code during software developer snapshot get change made to file rather than itself that mean if file is not changed it is not stored again distribution every user have his own copy which store data locally basically what happen we have a data locally and from there we push fast operation almost every operation on a gate is local hence the speed off by get is lightning fast compared to other tools Branch handling every collaborator work directly in the separate Branch basically if I have something to push I’ll push in my own separate Branch rust nearly every task in get is recorded and hence hard to lose any data the git workflow is like that use git flow to manage your project efficiently work with set of guidelines increase G consistency and popularity if I talk about one by one that Repository is a server where all the collaborator upload change made to the file then local repositor is a copy of database the user all the data file locally through push then working copy is a space where user active directory the user modify existing file and create new file in the space then staging area is a place where all the modified file are marked to be committed our place commit command commit all the file in the staging area to local Repository and push command move all the data in the local repository to remote repository when we do fetch fetch collect the change in remote repository and copy them to Local repository whereas a pull pull the latest change in the code so let me show you how exactly we can push pull the code in the GitHub now for doing that what we’ll do is so let’s go here so this is my GitHub if I want to make any new repository where I can push the code what I’ll do is I’ll go here click on the icon and say Eda like that after that I’ll create one repo now one repository by name of edria created it give me this five commands so now what I’ll do is on my local system I’ll make one folder from where I want to push any code suppose it’s my local system it don’t have anything suppose I’ll take few files here three files I pick I’ll move these three files here now I want to push for a Windows system you need to have a g bash which is already there in this machine right click G bash here we write one by one command the very first command is git in it basically we initialize the git in this folder sorry let me minimize it first of all we minimize the code in this folder like say I’ll say git in it this will initialize the git in this folder I say your hidden folder will be created once you do like that your hidden folder will be created in the gate so let me actually close this one and if I go to view know and I say hidden files item see one get folder created right then you have to add all the code a get add then you write get commit it will commit all the code in a local repository write some command so it say that you’re pushing it first time so you have to set your Global username and password so how we’ll do is we’ll say get config the very first time you’re doing from system you do like this get config hyphen hyphen Global we’ll say user . email so I’ll add my email ID here you have to give the email ID by which you have signed up on the G I’ll add that email ID here it’s wrong email id id you will not take it then then I write here my username of this that is aash developer get config minus minus Global and then I have to say user.name and that is Akash developer like this and now it’s set now you try to commit the code it say still something is missing although we have already done that so it’s actually helped to set a global username first of all let make sure we’ll say get config Hy Global user. email now it is done and then user.name now see it’s committed after that in whichever Rao you want to push you have to pick that path of the trpo like this so I’ll go back and particularly paste it and enter at that and we’ll say get push minus U origin Master like that now this will push the code to this repo tomorrow if anything new want to push just three command get add get commit and get push ask my username and a password I’ll enter that so guys means first time you push like this next time when you want to push you just write get add get commit and get push that’s it now it’s done so see it’s pushing that code if you go back to get your code is pushed next time also get add get commit get push now suppose I open any file and some edit there I write here aast developer or I write something different say developer funnel like that anything I can write here now once I write and I commit the code so suppose some other developer already pushed some code there now what you have to do in your G you will write get pull so the latest commit what whoever made is pulled see creating a remote repository we have already seen how exactly we add the code to the G so we already in the last demo we have created that repo we have given a name and we created that now to push the code we need to have our get bash after that we did get in it then we config that after that we added the remote where you want to push and then we committed that code once it commit it goes to the master Branch after that that suppose if I have to take some different branches like so remove the code we’ll say get RM and the file name get cache or the error showed up if you try to delete the stage file you can force delete by adding minus F to that I’ll show one more thing here suppose I want the two developer are working we can make a branch also we’ll say get checkout minus B checkout now what this will do it make an separate Branch for that I’ll say new feature any name I can give like this now if I add add some file in the folder suppose I’ll create one new file in the folder random file now when I push this s I’ll say get add get commit then get push in that Branch get push minus U origin and the branch name that is new feature that Branch name enter wrong and plus get command was wrong so I have to correct that both the things now this time it’s going to push in separate branch and see on the git we get something in terms of like pull request so what we do in real time we say compare pull request if everything’s look good we can add the reviewer and create that once you read the pull request your reviewer will review the code if they find everything fine they merch so what happened once they confirm merch your both the branches got merch but you’ll see two Branch [Music] here so starting with answering who is a react JS developer reactjs developers design and Implement user interface components for JavaScript based web and mobile applications using the react open-source Library ecosystem these skilled front-end developers are involved in all stages of interface component design from conception to final testing from conception to testing a topnotch react developer can help build interactive components for websites or web applications using the react development Concepts today more and more Enterprises benefit from reactjs a testament to its bouring popularity in software development some of the high traffic websites that use react are Instagram Uber Facebook Twitter Reddit Etc along with the upswing in react usage is the surge in demand for a reactjs developer a highly skilled react developer is involved in the entire stages in the development and maintenance of user interface components a react developer is responsible for Designing and implementing UI components for JavaScript based web applications and mobile applications with the use of open-source Library infrastructure these developers are a part of the entire process starting from conception to the major testing process and follow popular reacts workflows like flux and Redux reactjs developers are front-end developers who build modern-day UI components to improvise applications performance they leverage their knowledge about JavaScript HTML CSS and work closely with testers designers web designers and project managers to create a robust and effective application so I can sum up as reactjs developers are also known as front-end developers who design and Implement user interface components for JavaScript based web and mobile applications using the react open-source Library ecosystem now moving ahead I’m going to discuss the job opportunities for a react GS developer there are thousands of jobs in the world which demand reactjs skills talking about the numbers there are more than 43,000 jobs available on LinkedIn alone in India for react as compared to 2019 there has been 184% of increase in the openings for react GS developers in the year 2020 according to India Today a quest report States after covid-19 that is in 2021 reactjs developer is one of the top digital skilled jobs in demand this quite a huge number of job opportunities makes react one of the skills most of the application developers want to learn and secure a good job moving ahead let me discuss the salary trends of a reactjs developer of course of course salary is important today react has the best pay scale on most of the job suggesting websites like LinkedIn glass store pay scale Etc reactjs developers salary depends on multiple factors like years of experience different roles held over time level of expertise special skills training and certifications and also the geographic locations the average salary for a reactjs developer in India is 79,81 92340 now as I’ve told the average salary for a reactj developer in India is [Music] 79,80 K for frontend developer or engineer the average salary of 650 4K for software engineer and the average salary of 1 million for senior software engineer now moving ahead let me show you the job description which have been posted on different job suggesting portals by top organizations so first for example we have Tech Mahindra the designation is react developer and the locations are Bengaluru Hyderabad and Chennai in their job description they have mentioned the skills required for the candidate it includes btech is a must mte or MCA with relevant experience so they are talking about the graduation and the degree which is required talking about the react skills so as you can see they need a react developer with front-end technology with Redux or d3.js experience they need a candidate which has strong Proficiency in JavaScript including Dom manipulation and the JavaScript object model the candidate should have thorough understanding of react GS and its core principles and experience with popular react GS workflows like flux or ruxx the candidate should be familiar with newer specifications of ecma script which are known as like es6 es7 es10 Etc and restful apis the candidate should be familiar with modern frontend built pipelines and tools and should have the experience with common frontend development tools such as Babel webpack npm Etc the candidate should have the ability to understand business requirements and translate them into technical requirements and familiarity with code versioning tools such as git SVN Mercurial and similar and the candidate should have a knack for benchmarking and optimization if your skill set is matching to this job description you are good to go now let’s see one more job description from EX censure where their designation is reactjs application developer and the location is Bengaluru they require be or preferably certified as technical architect associate they need a full stat developer who has worked with react spring boot or Java microservices the candidate should have an experience of one year on most of react GS bootstrap engin Docker weback J or JavaScript and for backend the candidate should have minimum one year of experience on nodejs python AWS Lambda darker just unit test or P test and the candidate should be a developer with one to two years of experience and a passion for Quality good design and

    clean code so if you are matching this criteria you are good to go for this job so as you have seen some of the job descriptions from different companies now I think you have an idea how to prepare for the jobs for reactjs developer now moving ahead I’m going to discuss the skills required to become a reactjs developer as we have seen in the job descriptions as well so I’m going to explain those skills now starting with basic programming and development skills which include HTML CSS JavaScript reactjs G HTTP protocol and terminal talking about HTML and CS no front-end developer is a stranger to HTML and CSS the ability to work with and craft user interfaces is necessary to every organization at a high level react developers should be able to work with and write centic HTML tags work with and write CSS selectors Implement a CSS reset understand the Box model and how to reset to border box understand Flex box and work with an implement responsive web principles including the proper use of media queries talking about the JavaScript fundamentals including es6 you can’t rock react without a firm understanding of the fundamental concepts that the JavaScript language provides but these es6 skills are also essential which include variables and scoping arrays and objects array methods functions and arrow functions in react every single component you build is a function in one way or another remember that classes are just Constructor functions under the hood regardless of the syntax you are using when building functional components or class components you are using some form of a function and then comes the react this is the main deal you got to learn react and learn it well to become a react developer while learning react you should focus on the topics like routing GSX Etc talking about GSX in react you never really touch HTML proper you work with a syntax extension that is truly one of the most remarkable part of the react ecosystem that is jsx jsx looks so much like HTML you may think of it as HTML flavored JavaScript what’s cool about jsx is that if you know HTML and CSS you intuitively know how to work with jsx jsx is an abstraction on top of the react. create element API one re reason it is vital to the library and why the react team chose to go with it in the first place is that the API would be too cumbersome to use in terms of scaling one potentially could use react. create element to build out an entire application however this wouldn’t be any more efficient than just using HTML proper it may feel at first that we have taken a step backward by adding our markup into our template logic however a few quick minutes with GSX and you will be hooked on the style and now we have new jsx transform as well so you can explore that as well in react you should learn Dom manipulation and event handlers the disc keyword higher order functions and call back functions prototypal inheritance and object creation and the class keyword it doesn’t matter whether you are a front-end developer or a backend developer or even a full stack software engineer you must absolutely know get in 2021 try creating a few repositories on GitHub share your code with other people and learn how to download code from GitHub on your favorite ID git is essential to every developer toolkit for storing projects on Solutions like GitHub bitbucket and gitlab and the skills that should just be part of your day-to-day include tracking changes with ADD commit push and pull branching and merging strategies and handling merge conflicts you should know https protocols like if you want to become a web developer then it’s an absolute must to know HTTP and know it well I’m not asking you to read the specification but you should at least be familiar with common HTTP request methods like get post put patch delete options and how HTTP and https Works in general and you should learn the terminal as well though it’s not mandatory for a frontend developer to learn Linux or terminal I strongly suggest you to get familiar with the terminal configure your shell which includes bash zsh CSH Etc while I’m talking about the skills so you should also be familiar with the build and State Management tools which include node node may be a surprise to many like why would you need to know how to work with node in order to be a client side react developer so the answer is high server load using node with react makes sense when you web application needs handling of multiple requests and maintaining server load balance and react developers need to have a solid understanding of the npm registry this is the place where software developers can go to get software to help them build software sounds funny but truly that’s all the npm is a cloud storage for packages we call dependencies and as you can see on the screen I have mentioned npm or yarn so Yar is a package manager that is built to utilize the npm registry Yan actually optimizes your npm workflows Yar and npm somewhat compete today but the mission of Yar has been to solve a lot of problems that are accepted in the node npm ecosystem npm has been doing everything it can to follow the patterns and practices that yarn presents then comes create react app so it is like a quick start to create a react application you can just install create react app and you can just start with the default application you can add the components in that you can make the changes and you can get your react application ready then comes the web pack and Redux so react has built in State Management and many developers have been bored along the way by discovering the asynchronicity of State updates and how react handles them for that reason and for scalability Redux Wass born Redux is a state management library and more it’s not a framework but an opiniated way of working with data the principles behind Redux are along the lines of functional programming and immutability but it’s not a one- siiz fits all solution mastering the concepts of fundamental react programming prior to diving into Redux is key then comes Redux tongue which is a middleware and comes the flux so flux is also a workflow like Redux so you can choose whether to use Redux or flux depending on the requirement now talking about other utilities like API clients server side rendering tools and testing libraries so in today’s world you will rarely build an isolated GUI that is graphical user interface instead there is more chance that you will build something which communicates with other application using apis like rest and graphql thankfully there are many API clients available for react developers which include rest rest API actually in that we have fetch super agent Etc then we have graphql which includes Apollo relay urql Etc then talking about the server side rendering tools you might be thinking what is the difference between server side rendering and client side rendering let’s clear that before talking about the library which supports server side rendering with react well in client side rendering your browser downloads a minimal HTML page it then renders the JavaScript and fills the content into it while in the case of serers side rendering react components are rendered on server and output HTML content is delivered to the client or browser for server side rendering you can learn next.js or after. JS or roll but I suggest learning just next.js should be enough and testing is one of the important skill for react developers which is often overlooked but if you want to stay ahead from your competition then you should focus on learning libraries which will help you in testing for unit testing you can go for just enzyme sonon moocha Ava tape Etc and for end to end testing you can go for selenium web driver cucumber. JS Etc and for integration testing you can go for karma you can learn the library you want but gist and enzyme are recommended and I want to add up one more thing for virtual reality if you are interested in building virtual reality based application then also you have some framework like react 360 which allows you to exciting 360 and VR experiences using react so if you are interested in that area you can further explore react 360 now comes the soft skills so to become a reactjs developer or any software developer be it front end or backend some of the soft skills are always required by the companies which include competence to translate business needs into technical requirements time management project management communication and interpersonal skills capability to write crisp and clear code problem solving and troubleshooting skills creativity and accountability open-minded team player willing to accept feedback and offer suggestions Etc and you should be having willingness to learn modern-day tools and processes as everything updates very quickly in today’s world and then as you can see on the screen I have mentioned UI and ux so as a frontend developer you must be familiar with the UI and the ux part of the application now I’m moving ahead with the road map to become a react GS developer so to become a reactjs developer you should follow a road map in which you should be familiar with the programming and in programming the skills which I’ve already mentioned you should learn those and then comes a reactjs which is the basic or the main thing which you should be familiar with then you should be completing some of the projects and you should be familiar with tools and utilities which are supporting reactjs and you must have graduation degree and accordingly you can go for the certifications as well which are mentioned in the job description in the particular company for which you are going to apply and also if you are not a fresher you should have the relevant experience as well and to to become a reactjs developer you should set some of the timeline or some deadline within which you will complete all the learning you will attain the required skill set to become a react GS developer the skills which I have mentioned you can go for that so you can attain strong Proficiency in JavaScript object model Dom manipulation and event handlers data structures algorithms jsx and Babel then you can go for understanding reactjs and it’s Main fundamentals like jsx virtual Tom component life cycle Etc you should be proceeding experience with reactjs workflows like flux Redux create react app data structure libraries Etc you should understand the restful apis or graphql HTML CSS es6 code versioning tools like git SVN Etc then popular frontend development tools cicd tools devops performance testing Frameworks like moocha just then you can go for node plus npm and you should have preferred degree in computer science information technology or similar and to help you out to attain all these skills in a proper manner I have some suggestions like you can go for eda’s reactjs certification training course so in this training course you will be trained to build efficient react applications by mastering the concept CS of react Redux and react native as well in this react course you will learn how to build simple components and integrate them into more complex design components and after completing this react online training you will be able to build the applications using react Concepts such as jsx Redux asynchronous programming using Redux Saga middleware fetch data using graph ql perform testing using chest successively deploy applications using ngx and Docker plus build mobile applications using react native and also you can go for react documentation whenever you have any doubt or whenever you are stucking somewhere and you can go for GitHub there so many projects are available which you can clone or take help to build your own and if you have any doubts for which you need some answers you can go for GitHub as well now moving ahead let me discuss the roles and responsibilities of a reactjs developer a skilled react developer makes it painless to create high quality web applications with elegant uis using the react Library reactjs developers bridge the gap between the visual aspect and the server s side component they take a proactive role in streamlining the look and functionality of the applications as an efficient reactjs developer he or she is supposed to perform certain defined roles and follow respons responsibilities to get the best of results here are the major ones that any reactjs developer is supposed to follow Leverage The inbuilt react toolkit create data visualization tools libraries and reusable code for prospects integrate designs and wireframes within the application code monitor interaction of users and convert them into insightful information write application interface code with JavaScript enhance application performance with constant monitoring translate wireframes and design into good quality code optimize components to work seamlessly across different browsers and devices good understanding of CSS libraries git Sigma Adobe XT Etc proper user information authentication and develop responsive web- based UI and if I talk about non-technical roles and responsibilities so it includes constant interaction with other developer teams and design team to discuss UI ideas a thorough review of applications needs and interfacing elements and follow proper documentation for changes in application and further updates now let me discuss why is reactjs in demand reactjs being a multi-layered library has been a key Delight for developers and organizations alike reactjs developers Have Been instrumental in assisting business owners to to focus on their Core Business areas without having to bother about other it related activities this has helped big time in enhancing client satisfaction some of the features of reactjs which have increased the demand of reactjs are flexibility reusability strong documentation and Community Support fast rendering single page loading and easy debugging so when I talk about flexibility it is especially visible when it comes to the use of react for web development when we talk about react’s flexibility we refer to the libraries innate modularity as we know react’s architecture allows bundling frontend code into custom components this providing a solid foundation for the overall development process optimization reactjs allows you to write clean modular code breaking the project into separate components as a result when code is modular it gets easy to maintain and scale react is super flexible in the sense that it can be integrated with other third-party libraries and MVC Frameworks you can choose to create a react project from scratch or gradually introduce react to your existing code base and when I say reusability react doesn’t require big lines of codes to program an application in react we say that everything is a component a user writes small codes called components and combines them to form another component simply any app made with react is a tree of component so react follows right once and use it anywhere principle then comes strong documentation and Community Support being an open source Library react has what it takes to keep attracting more and more New Comers to its Community which makes it only stronger over time as of today react is one of the five top rated repositories on giab with over 170k stars and over 5 million applications publicly admitting to using it react has a rich ecosystem to benefit from or contribute to besides finding one’s way around all this information won’t be a big challenge as the react documentation can be easily found on the official website the community is active so you can get rapid feedback or response to your inquiry once you feel stuck currently on stack Overflow there are over 14 million questions tagged react GS that have at least one accepted answer so once you encounter a problem chances are someone has already had same problem and there is a solution to it so that you will only have to copy paste it from the corresponding discussion thread talking about the fast rendering so react is a client side JavaScript library that uses server side rendering react’s virtual Dom is basically the prime cause of faster rendering and the better performance of react apps and this react virtual D serves as a layer between how things are supposed to look and the actual processes happening to render all of those things onto the page and the single page loading so due to the single page loading with the help of virtual term this fast rendering is achieved and then we can talk about the easy debugging in react props and estate are the bread crumbs like when something goes wrong it is important that we have breadcrumbs to trace the mistake take to its source in the code base and if you see something wrong on the screen you can open react div tools and find the component responsible for rendering and then see if the props and states are correct if they are you know that the problem is in the component’s render function or some function that is called by render function the problem is isolated if the state is wrong you know that the problem is caused by one of the set State calls in this file this two is relatively simple to locate and fix because usually there are only a few set ofate calls in a single file and react results in not only easy debuggable code but also highly testable applications with the help of chest or enzyme Etc now let me discuss the future of react GS developers reactjs developers surely have a promising future since reactjs is showing no chances of turning back as you must have seen the requirement for reactjs developers on different jobs suggesting portals and on LinkedIn itself we have 43,000 and more jobs for reactjs developers we have 170k stars on GitHub so many requests for the applications and more than 90,000 live websites are using reactjs and a lot of organizations have started migrating to react so they definitely need more and more RS developers now as compared to other peer comp competitors react CH developers are being paid heavily and are in demand Facebook and the entire Community have been trying hard to keep enhancing the effectiveness and speed of reactjs hence it is imperative that reactjs will keep fighting the competition hard and come out as a winner newer updates and ways of rendering are expected soon the way it is growing the demand for reactjs developers is exponentially higher to sum up I would say the word is unquestionably changing in Rapid and dramatic ways and the demand for reactjs developers is going to keep increasing for sure now after discussing a lot of things and addressing a lot of questions I hope you have got the idea how to become a reactjs developer from where to start how to start what skills are required why those skills are required Etc all these questions have been addressed [Music] I will discuss the questions on four topics of react which are being frequently Asked in react interviews the topics covered today are react GS Basics or the general react then reactjs components then we have reactjs Redux and reactjs router now starting with the general react questions so the first or the basic question on react is what is reactjs to answer this question I would say reactjs is an open-source frontend JavaScript library which is used to build user interfaces and handle view layer for web and mobile applications it follows a component based approach the react package contains only the functionality necessary to Define react components and it is typically used together with a react renderer like react Dom for the web or react native for the native environment now here when I talk about component based approach so everything in reactjs is a component so what happens is these components can be reused they can be placed wherever required so we can just write it once and use it anywhere and any time now even though react was open sourced only in 2015 it has one of the largest communities supporting it moving to the second question that is what are the features of reactjs to answer this question I would say the major three features of reacts JS because of which reactjs is known are virtual Dom server side rendering and unidirectional data flow or data binding it’s talking about the virtual Dom that is actually the virtual data object model a virtual Dom is a lightweight JavaScript object which originally is just a copy of the real Dom it is a node tree that lists the elements their attributes and content as objects and their properties reacts render function creates a not tree out of the react components it then updates this tree in response to the mutations in the data model which is caused by various actions done by the user or by the system talking about the serers side rendering when I say serers side rendering which means using a server to generate HTML from JS modules in response to a URL request that’s in contrast to client side rendering which uses the browser to create HTML using the Dom server side rendering with JS or react Works similarly to other server side languages now when I say unit directional data flow data binding so in react data flows in a single direction that is from parent components to child components which helps in data binding and it makes the application and the code predictable and more debuggable moving ahead with the next question which asks list some of the major advantages of react talking about the advantages of react so it increases the application’s performance it can be conveniently used on the client as well as server side because of jsx cod’s readability increases and react is easy to integrate with other Frameworks like meteor angular Etc and using react writing UI test cases becomes extremely easy now let’s move ahead to the next question which asks what are the limitations of react talking about the limitations of react react is just a library not a full-blown framework and its library is very large and takes time to understand it can be a little difficult for the Novis programmers to understand and coding gets a little complex as it uses inline templating and jsx now the next question is what is jsx so jsx is basically shorthand for JavaScript XML this is a type of file used by react which utilizes the expressiveness of JavaScript along with HTML like template syntax this makes the HTML file really easy to understand and this file makes applications robust and boost boost its performance now let’s see the next question which is what do you understand by virtual dor explain its working so as we have discussed in a previous question also about virtual domor a virtual domor is a lightweight JavaScript object which is just the copy of the real Dom it is a notary that lists the elements their attributes and content as objects and their properties react’s render function creates a not Tre out of the react components it then Updates this tree in respon responds to the mutations in the data model which is caused by various actions done by user or by the system and this virtual Dom Works in three simple steps which are whenever any underlying data changes the entire UI is rendered in Virtual Dom representation then the difference between the previous Dom representation and the new one is calculated and once the calculations are done the real Dom will be updated only with the things that have actually changed so here a kind of patch work is done as you can see in the picture also moving ahead with the next question that is differentiate between real Dom and virtual Dom when we compare real Dom and virtual Dom we find the differences like real Dom updates slow while virtual Dom updates faster real Dom can directly update HTML while virtual Dom can’t directly update HTML real Dom creates a new Dom if element updates while virtual Dom updates the GSX if element updates so that’s why real Dom is comparatively slower than the virtual Dom because in real Dom every time any element gets updated a new Dom is created while with react which uses virtual Dom whenever any element gets updated only the js6 part gets updated now the next difference is Dom manipulation is very expensive in real Dom because every time you have to create the new Dom while Dom manipulation in react that is virtual Dom is very easy and real Dom results into too much of memory wastage while virtual Dom results in no memory wastage at all the reason we know because every time new Dom is created whenever any element gets updated while with the help of virtual Dom in react only the GSX part gets updated with the update in any element now moving to the next question which asks why can’t browsers read GSX browsers can only read JavaScript objects but jsx is not a regular JavaScript object thus to enable a browser to read jsx first we need to transform jsx file into a JavaScript object using jsx Transformers like Babel and then pass it to the browser now let’s move ahead with the next question that is what is jsx transform as browsers don’t support GSX the compilers like Babel or typescript are used to transform GSX into regular Javas script object which is understood by the browsers as we have seen in the previous question now jsx transform automatically compiles the jsx source code without having to rely upon the typical compilers with the new transform jsx can be used without importing react and according to the setup its compiled output slightly improves the bundle size as well now let’s see the answer for the next question which is how react syntax changed from es5 to es6 so as you can see on the screen the code snipp it for es5 and es6 so in es5 we use react. create class and which we initialize in a variable for example here we have taken my component but in es6 we just make use of classes and we make use of extend keyword and the syntax is class the name of the component my component or the class my component extends react. component so the major difference between es6 and es5 is in es5 we make use of create class while in es6 we make use of react. component now let’s move ahead with the next question that is how errors are handled in react so talking about the error handling in react the most distinctive and react specific type of error handling is what is known as error boundaries so error boundaries are react components that catch JavaScript errors anywhere in their child component tree log those errors and display a fallback UI instead of the component tree that crashed error boundaries catch errors during rendering in life cycle methods and in Constructors of the whole tree below them now let’s see the next question that is what are the limitations of error boundaries in react so talking about the limitations of error boundaries error boundaries do not catch errors for event handlers asynchronous code that is set a timeout or request anim frame callbacks for server side rendering and errors thrown in the error boundary itself rather than its children now let’s see the next question that is what are the features introduced in es7 so ecma is script 2016 or es7 introduced two new features that are array.prototype do includes function and the second one is exponentiation operator talking about array.prototype do includes function so it checks the array for the value passed as an argument it returns true if the array contains the value otherwise it returns false earlier we needed to use array. prototype. index of function to check if the given array contains an element or not talking about exponentiation operator so ecma script 2016 or es7 introduced the exponentiation operator that is double Aster it has the same purpose as math. power function it Returns the first argument raised to the power of the second argument moving to the next question which asks list some of the features of es10 so this is the latest version of ecma script so the features introduced in es10 include optional cach binding object. from entries array. flat function array. flat map function Dynamic import Global this object now the next question is how is react different from angular so talking about the differences between react and angular we see on the basis of architecture react is only the view of MVC that is model view controller while angular is complete framework for MVC that is model view and controller talking about the rendering so react supports server side rendering while angular supports client side rendering talking about the Dom that is data object model so as we have seen earlier also react uses virtual D and we have seen the advantages of using virtual Dom while angular uses the real Dom talking about the data binding react uses oneway data binding or the unidirectional data flow while angular has two-way data binding or the bir directional data flow talking about the debugging react supports compile time debugging while angular supports runtime debugging and talking about the author or who owns react and angular so react is owned by Facebook while the author of angular is Google with this we have seen some of the frequently asked questions and answers based on General react now moving ahead let’s see the questions based on react GS components so starting with the first question based on reacts components what do you understand from in react everything is a component to answer this question I would say components are the building blocks of a react application UI so everything in react is a component and these components split up the entire UI into small independent and reusable pieces then it renders each of these components independent of each other without affecting the rest of the UI and these components can be JavaScript functions which takes in arbitrary inputs and returns HTML representation now let’s see the next question which asks what is the purpose of render function in react or explain the purp purpose of render function in react to answer this question I would say each react component must have a render function mandatorily it returns a single react element which is the representation of the Native Dom component if more than one HTML element needs to be rendered then they must be grouped together inside one enclosing tag such as form group div Etc this function must be kept pure that is it must return the same result each time it is invoked moving to the next question that is how can you embed two components into one so as you can see on the screen we have one code snippet we have embedded two components with the help of class then the component name or the class name then using the keyword extends and we made the use of react. component with this syntax as you can see on the screen we are embedding two components into one so there are two components the my component and header component moving to the next question that asks what are props in react so Props is basically the Shand for properties in react they are readon components which must be kept pure that is immutable and they are always passed down from the parent to the child components throughout the application a child component can never send a prop back to the parent component and this helps in maintaining the unidirectional data flow or the data binding and are generally used to render the dynamically generated data moving to the next question what is a state in react and how it is used talking about the states so states are the heart of react components states are the source of data and must be kept as simple as possible basically states are the objects which determine components rendering and behavior they are mutable unlike the props and create Dynamic and interactive components and they are accessed via this do state function moving to the next question which is differentiate between State and props so while comparing State and props we find the differences like in state and prop both receive initial value from parent component while in state parent component cannot change value while with the help of prop parent component can change the value and we can set default values inside the components both in state as well as in props in state we can make changes inside the component but with props we cannot make the changes inside the component and we can set initial values for child components in both state as well as in props but changes inside the child components cannot be made in state while in prop we can make the changes inside child components now moving to the next question which asks how can you update state of a component now here you can see a code snippet so basically the answer for this question is we can change the state or we can update the state of a component by making the use of this do set State function and as you can see on the code snippet as well earlier here name was Max and ID was 101 then again in render function we’ll make use of set State basically this do set State function and inside that we can change the value or we can update the state of the component so here we are making the change in the value as you can see over here we are updating it to jaha and id2 triple2 now moving to the next question that is should we update the state directly so to answer this question we should not update the state directly and why we should not update the state directly because if we update the state directly calling the set State function afterward we just replace the update we made made and when we directly update the state it does not change this do state immediately instead it creates a pending State transition and accessing it after calling this method will only return the present value and we will lose control of the state across all the components so that’s why we should not update the state directly moving to the next question that is what is Arrow function and how it is used Arrow functions are more of brief Syntax for writing that function expression they are also called fat Arrow the functions it is symbolized with equal to and greater than symbol now these functions allow to bind the context of the components properly since in es6 Auto binding is not available by default and arrow functions are mostly useful while working with the higher order functions or HFS as you can see in the picture as well without Arrow function and with arrow function without Arrow function we were making use of this do handle change. bind while with aror function we have just made use of this symbol that is equal to and greater than and then we made use of this dot handle on change no need for bind and all now moving to the next question that is how do you reference a Dom element it is a pretty simple question and answer to this question is also very simple and crisp that is an object this do refs that is this do RFS which is found as an instance inside the component can be used to access Dom elements in reactjs now moving to the next question that is what is the use of e do persist function answer of this question is nothing e persist function does nothing because e do persist function was used in event pooling but with react 17 event pooling has been completely removed but this e do persist function is still available on the react event object but now it doesn’t do anything now moving to the next question which asks what do you mean by event pooling as we have seen in the previous question that event pooling has been removed from react 17 but we should know what is event pooling because this question has been frequently Asked in interviews so the synthetic event objects were pulled this means that the synthetic event object would be reused and all properties would be nullified after the event handler has been called now for example you can see the code Snippets available here so earlier when event pulling was supported in react the first snippet as you can see over here this would not work because the event object gets reused but with the help of e do persist function this code works because it prevents react from resetting its properties but this is the case before react 17 now event pooling is not supported by react now moving to the next question what are react hooks so react hooks are functions that let us hook into react State and life cycle features from a functional component so what is this hook into actually these functions let us use the react State and life cycle features from a functional component and react hooks Cann not be used in class components they let us write components without the class now moving to the next question question when and why hooks were introduced in react react hooks were introduced in the 16.8 version of react or react 16.8 earlier functional components were called stateless components and only class components were used for State Management and life cycle methods the need to change a functional component to a class component whenever State Management or life cycle methods were to be used led to the development of hooks now moving to to the next question that is do you know any of the techniques to optimize react app performance so there are many techniques to optimize react app performance but some of them are using use memo function using react. pure component and maintaining state collocation so when I say using use memo function so it is a react hook that is used for caching CPU expensive functions sometimes in a react app a CPU expensive function gets called repeatedly due to reenders of a component which can lead to slow rendering now this use memo function who can be used to cat such functions by using use memo the CPU expensive function gets called only when it is needed talking about using react. pure component so it is a base component class that checks the state and props of a component to know whether the component should be updated instead of using the simple react. component we can use react. pure component to reduce the reenders of a component unnecessarily and ultimately it optimizes the application performance and when I say maintaining state collocation so this is the process of moving the state as close to where we need it as possible sometimes in react application we have a lot of unnecessary States inside the parent component which makes the code less readable and harder to maintain not to forget having many states inside a single comp component leads to unnecessary reenders for the component and it is better to shift states which are less valuable to the parent component to a separate component now moving to the next question what is lazy loading lazy loading is the feature introduced in react version 16.6 which allows for some components to load later than the other components this way we can load the components which are fast like text earlier and the components which load later like images later it is also Al referred to as code splitting and data fetching moving to the next question what is a fragment in react a common pattern in react is for a component to return multiple elements but fragments let us group a list of children without adding extra nodes to the Dom while rendering multiple elements will require a div tag around the content as the render method will only render a single root node inside it at a time so in react 16.2 fragment were introduced and we use them instead of extra div tags and all so as you can see in the code snippet available on the screen in place of using div tag we are just making use of react. fragment and inside this you can see this child a child B CH see these are basically the elements now moving to the next question which asks what is set State function so set State function allows us to change state in a react class component as we have seen in a previous this question we were making use of this do set State function right and the set State function enqs change to the component State and tell react that this component and its children need to be rendered with the updated State this is the primary method you should use to update the UI and set a state does not always update the component immediately instead it may defer the update until later for better performance and the Syntax for this function as we have seen in the previous question also here set State and in the braces we can give the updator or the call back we can pass it as the argument moving to the next question that is what is use State function so the use State function is a react hook that allows to have a state variables in functional components the use State Hook is a special function that takes the initial State as an argument and returns an array of two entries moving to the next question what do you mean by Contex in react so the react context API is a way for a react app to effectively produce Global variables that can be passed around this is the alternative to prop drilling or moving props from grandparent to child to parent and so on a new type of context can be created using react. Create context API and this context API is added in version 16.3 of react that allows one to share state across the entire application or part of it lightly with ease moving to the next question what do you mean by prop drilling so prop drilling can be defined as a process and react application where props are passed from one part of a tree to another by going through other parts that do not need the data but only help in passing it through the tree and it is also known as prop threading now I give it over to Mr asho to take you through the more questions on react components react Redux and react router what are the differences between State full and stateless components this table is showing the differences so stateful components are those which stores information about component State change in memory stess they calculates the internal state of the components stateful components they have authority to change the state as the name suggest stateless components cannot have authority they do not have authority to change the state if I talk about stateful component they contains the knowledge of past current and possible future changes in state stateless components they contains no knowledge of past current and possible future State changes stateless components notifies them about the requirement of the state change then they send down the props to them stateless component if I talk about they receive the props from the stateful components and treat them as call back functions so this table is very important it’s a very general question again asked nowadays in reactjs interviews that what is the difference between stateful and stateless components what are the different phases of react component life cycle in a very interesting one so as we all know that there are four phases so here I’m defecting the three phases and initial phase which are mostly used the updating phase one is the mounting phase and another one is the unmounting phase we can amalgamate the two in one so now it becomes three so initial phase updating phasee and unmounting phase as you can see on the screen every phase is having their own methods which are working in a particular order or this particular priorities so initial phase is having the function as get default props get initial State component will Mount render and component did Mount if I talk about updating phase these are the methods or functions available in the updating phase again it is had render if I talk about the unmounting phase so unmounting phase has a function called components will unmount so these are the various life cycle methods I will say these are called the life cycle methods in reactjs which we need to have so that whatever props or components we are using they gets mounted and unmounted accordingly explain the life cycle methods of react components in detail if I talk about the life cycle methods which we just saw in the previous slide that what are the life cycle methods in react so these are the various methods which we generally use component will mount it gets executed just before the rendering both on client and server side component did Mount it is executed after first render only on the client side the other one is component will receive props it is invoked as soon as the props are received from parent class before another render is called the other method or the life cycle method is should component update it returns true or false value based on certain conditions if you want your component to update return true else return false by default its value is false component will update it is called just before rendering takes place component did update and the other one is component will unmount this is called after the component is unmounted from the top it is used to clear up the memory spaces so all these are the life cycle methods which are used in react JS now what is a event in react events are triggered reactions or I will say actions to specific actions like Mouse over Mouse click key press Etc react events are similar to HTML JavaScript events so for example in this example or in this diagram as you can see this is a bulb is there is an action called switch on if someone clicks on on the bulb is getting on so this is kind of a event which is getting triggered which are reactions to specific actions how we can create events in react JS so as you can see here this is a render function class display extends react. component in es6 class standard of writing the code here I’m using a render function which is returning a TI and on click is the event that is how we can create the events in react CHS this. show click me what are synthetic events in react CH synthetic events are uh the cross browser wrappers around the browser’s native event system they combines the browser Behavior into one API and they’re done to ensure events have consistent properties across different browsers so if we want to have a react JS application running on different browsers we will use synthetic events in react JS what do you understand by reps which are references in react JS so reps stands for references so they are used to return references to a particular element or component returned by render they are basically useful when we need Dom measurements or to add methods to the components list some of the cases when you should use reps so first of all they are used to manage Focus text selection or media playback for triggering imperative animations just like as you can see on the screen if you want to display this kind of Animation imperative animation we will use reps in reactjs and if you want to integrate with third party Dom libraries that is also where we use reps in react JS how do you modularize code in react so we can modelize code uh by using the export and import standard or by using export and import properties we can write the component separately in different files so for one file we will use the export property and for another file we can use the import property that is how you can modelize the reactjs code and as you can see on the screen the two code is snippits for or two files I’ll say for export and import properties how forms are created in react this is again a very basic question questions with interview question with respect to react so HTML form elements maintain their own State and regular Dom and update themselves based on user input in reactjs state is contained in the state property of the component and uh it gets only updated bya set State as we all know so JavaScript function is used for handling the form submission what do you know about controlled and uncontrolled components so as I mentioned earlier components are of two type presentational components and container comp components again there are two other types of components which are controlled and uncontrolled so controlled components are those which do not maintain their own State the state is not maintained in control components data is controlled by parent component not by the child components the control components takes in current value through props and notifies changes via call packs I talk about uncontrolled components they maintain their own State data is controlled by Dom and reps are used to get their current value so if you want to use rest we need to have uncontrolled components now what are H when I say h these are high order components so these are the custom components I will say which we develop while doing programming in reactjs so these are the custom components which wraps another component they accept dynamically provided child components then they do not modify the input component they do not copy any behavior from the input component and I’ll say that these are the pure functions basically they are the custom components which are developed to addon functionality to some other components these are called H’s so what can you do with h h means high order components can uh reuse the code logic and bootst step abstraction using H’s we can render High checking State abstraction manipulations and also we can also do state and props manipulations with h high order components now what are pure components pure components are the simplest fastest components which we can right these are very fast they can replace any component that only has render answers the Simplicity and performance of the application these are the pure components as you can see here there is a code snippet react dom. render H1 hello document. get element by ID content so these are the two parameter which needs to be passed to the render function and this is the simple component I will say simplest component or I can say the pure components which we can write in reactjs and Hance the performance and it I will it is the fastest in react CHS now what is the significance of keys in react chairs or what is the significance of keys in react it is used to identify unique virtual Dom elements with their corresponding data driving the UI so as we all know there is a key value pair combination always in every programming language just like that we have keys and reactj which is used to identify the virtual Dom elements and what are the virtual Dom elements with respect to their driving UI this we can know using keys in react CHS they must be unique number or a string they helps react to optimize rendering by recycling existing Dom elements so instead of rendering with keys react just reorders the element so if you don’t want to reender your UI or if you don’t want to reender your components you can just reorder the elements using keys in react CHS and obviously with all these T the performance of the application gets optimized and highly increased in react ch so that was all about the second section of the react interview question let’s move forward and now I will talk about the interview questions related to react Redux this is a combination of react and Redux technology so what were the major problem with MVC framework see we all know it’s a model view controller so what is the major problem so Dom manipulation is very expensive because MVC framework is completely based on Dom and not on Virtual Dom just like in react CHS is slow and inefficient there is lot of memory wastage in MVC framework because of circular dependency complicated model was created around model and Views so these are some of the drawbacks or problems with MVC framework now flux before Redux there was a technology called flux which was introduced by Facebook so what was flux architectural pattern that enforces unidirectional data flow so on the screen as you can see there is a action then dispatcher store and view so architectural pattern that enforces unidirectional data flow controls derive data and enables communication between multiple components now as you can see there is a central store which has Authority for all the data any update in data must occur here only so store is the central or the heart for all react Redux or flux application it provides stability to the application and it reduces runtime errors what is Redux Redux is one of the hottest Library I will say for frontend development it is very very famous you can also check how much it is famous and its popularity on GitHub sites that it has more number of stars and more number of watches as compared to flux it’s aable state container for JavaScript apps it is mostly used for State Management applications where State needs to be managed uh applications developed with Redux are easy to test and it helps to write applications that behave consistently and can run in different envir en Ms what are the three principles that Redux follows first is a single source of truth that is the store single source of Truth and when I say I’m talking about here the single store there is only one store in a Redux or react Redux application state is read only in Redux the changes are made with pure functions you can make changes only with the pure functions in Redux libraries what do you understand by single source of truth when I say single source of Truth it is the store which I’m talking about in Redux application Redux uses a store for storing all the application State at one place whatever the state happening or state changes happening in a react Redux application it will be notified to store or will happen uh in conjunction with a store so component state is stored in the store and they receive updates from the store itself so whatever the components so these are the various components so the state of all these components will be stored in a single place which is called store and any update needs to happen or needs to be there that will be received from the store itself the single state tree makes it easier because it’s a single state tree makes it easier to keep track of the changes over time and debug or inspect the application what are the various components of Redux first one is the action which is an object that describe what happen happened reducer it is a place to determine how the state will change or I will say the reducers are the pure functions which ISS how it needs to be done as I said action that what needs to be done reducer how it needs to be done is given by the reducers because these are the pure functions store as you saw just now in the previous slide that store is a single source of truth then need to be a single store which is used for State Management of all the components so a state object of the entire application is saved in the store view is to Simply displays the data provided by the store so how the data flows through Redux again a very interesting question that how we should know that how data is flowing through Redux so as you can see here that these are the container components which is passing data as the props they are passing the data to actions action is passing the data to reducer so the input for the store is the reducer and reducer is again giving the data to the provider component or you can say the view part of it so that is how the data Flows In Redux applications how actions are defined in Redux always remember that action should have a type property that indicates the type of action which needs to be performed so type is very important for every action so let’s say in this code is snip it as you can see on the screen there is a function called add to which is taking the input parameter as text is what it is returning is it is a type and this what type of action it is act to do so they must be defined as a string constant and we can add more properties to it that is not a problem with the action you can add as many properties as you want but the most mandatory part or the most important part for an action is it needs to have a type property and actions are created using functions called action creators the other question which we have is what is the role of reducers reducers are the pure functions which specify how the application State changes in response to an action it takes in the previous state and then action and Returns the new state so what is the work of a reducer basically it takes the previous state make the changes and it Returns the new state it determine what sort of update needs to be done based on the type of action and Returns the new values it Returns the previous state if no work needs to be done if there are no changes in the state or if there are no updates of obviously it will return the previous state which it takes as a input and as output it returns a new state with the changed parameters what is the significance of a store in Redux store as we all know now that store is the single source of Truth a JavaScript object holds the application state it maintains the application or I can say it maintains the state tree of the particular application that is the store provides a helper methods to access the state dispatch ction and register listeners with store the data State can be synchronized from the server level to the client CER without much hle and since it’s a single store it’s a single source of truth it’s a single place to maintain the state tree of the application it makes the development of the large application very easy and fast how Redux is different from flux so these are the basic differences between flux and Redux I talk about flux the store contains State and change log has multiple stores flat disconnected stores inlux all the stores are disconnected single turn dispatcher react component subscribed to the store in flux state is mutable so you can change the state in flux if I talk about Redux store and change logic are separate we have a single store in Redux single store with hierarchical reducers you can have multiple reduc ERS in Redux but the store needs to be single in react Redux application so if I talk about the container components they utilize connect and state is immutable this is again very important that the state is immutable in react Redux application what are the advantages of reduct so I’ve list down some of the advantages of Redux predictability maintainability the application will be very fast it will be optimized we have many developer tools the testing and debugging part will be easy and huge open source Community for Redux is available out there on internet and precise organization of course because there is only one store which is maintaining the state complete state of the application so these are some of the advantages of Redux which makes react Redux application very famous and very popular and the next question in react Redux is what is Redux tun so Redux tun is a middleware that lets call Action ction creators that return a function instead of an action object that function receives a stores dispatch method which is then used to dispatch regular synchronous actions inside the body of the function once the asynchronous operations have completed and the tongue can be used to delay the dispatch of an action or to dispatch only if a certain condition is met and basically it sits between action Creator and reducer in the react Redux flow now moving to the last part of the last section of this webinar that is the react router interview questions what is react router it’s a very powerful routing Library I’ll say it helps in adding new screens and flows to the application it keeps the URL in sync with data that is being displayed on the web page and it is a very simple API the react router API are very simple to use why switch keyword is used in react router version 4 the switch keyword is used when you want to display only a single route to be rendered among several defined routs so as you can see here if I want to have multiple defined Roots but I want to display only a single root then I use the switch statement why do we need a router in react so router helps in defining multiple routs inside the router with each route leading to a unique view as you can see on the screen there are multiple react routers for example these are the three router and each router is leading or representing I will say a unique view so that is why we need a router in react list down the advantages of react router so there are various advantage of react router the API is very simple and the API is all about component the API is component based the router apis it can be visualized the single root component no need to manually set history value it has separate packages for web and Native platforms that’s very famous how react router is different from conventional routing of data so again there’s a table of the differences based on the various topics Pages involved each view corresponds to a new file in react router only single HTML page is involved in conventional routing we used to have multiple PES involved in application if I talk about the URL changes in conventional routing HTP request is sent to the server and corresponding HTML page is received in react router only the history attribute is changed this is a very drastic change in the uh request response terminologies if I talk about the look and feel user actually navigates across different pages for each view in conventional routing but for react router user is duped thinking he’s navigating across different pages but it is actually not the case now the next question is why is switch keyword used in react router V5 or version 5 although a div tag is used to encapsulate multiple Roots inside the router the switch keyword is used when we want to display only a single route to be rendered amongst the several defined Roots the switch tab when in use matches the typed URL with the defined roots in sequential order when the first match is found it renders the specified value and thereby bypassing the remaining Roots as we have seen some of the frequently asked questions and answers in react interviews now let’s have a look on the requirements or the skills required to become a reactjs developer so to become a reactjs developer you should have the following skills which include fundamentals of HTML CSS and JavaScript fundamentals of reactjs which includes jsx es6 hooks node plus npm and Redux and with this we come to an end to this react GS full course and if you enjoyed listening to this full course please be kind enough to like it and you can comment on any of your doubts and queries we will reply to them at the earliest do look up for more videos and playlist And subscribe to the ureas YouTube channel to learn more thank you for watching and happy learning

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • Russian Language Learning Courses

    Russian Language Learning Courses

    YouTube Video Links

    Learn Russian the easy way: The COMPLETE Russian course for beginners (9 hours)
    2000 Words Every Russian Beginner Must Know

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • QuickBooks Online: Mastering Accounts Receivable Workflows

    QuickBooks Online: Mastering Accounts Receivable Workflows

    This video explains how to manage accounts receivable in QuickBooks Online. It covers the workflow from creating estimates to invoicing customers and receiving payments, including handling partial payments and using undeposited funds. The video also demonstrates creating invoices directly without estimates and managing overdue invoices with credit memos. Furthermore, it explores recording customer payments received via various methods, such as cash and credit cards, addressing bank fees, and utilizing the bank feed for matching transactions. Finally, the video illustrates managing billable time and expenses, utilizing delayed charges and credits, and generating customer statements for tracking transaction history.

    QuickBooks Online Accounts Receivable Workflow Study Guide

    Quiz

    1. What does “accounts receivable” mean in the context of QuickBooks Online?
    2. Briefly describe the pre-sale cycle in QuickBooks Online using the accounts receivable workflow.
    3. What is the purpose of converting an estimate to an invoice in QuickBooks Online?
    4. Explain two different ways to create an invoice in QuickBooks Online.
    5. Describe the purpose of the “Receive Payment” function in QuickBooks Online and where it can be accessed.
    6. What is “undeposited funds” and why might a business use this account when receiving payments?
    7. Explain the purpose and process of creating and applying a credit memo in QuickBooks Online.
    8. Describe how to record a partial payment from a customer in QuickBooks Online.
    9. How can bank feeds in QuickBooks Online be used to manage accounts receivable, and how are fees typically recorded in this process?
    10. What are delayed charges and delayed credits in QuickBooks Online, and when might a business use them?

    Quiz Answer Key

    1. Accounts receivable in QuickBooks Online refers to the process of recognizing a sale when a customer agrees to buy something, with the expectation of receiving payment at a later date. This workflow is used when payment is not received at the same time as the sale.
    2. The pre-sale cycle begins when a customer expresses interest in purchasing a product or service. The business then creates an estimate (or quote) outlining the offer. If the customer accepts, the estimate is later converted into an invoice.
    3. Converting an accepted estimate to an invoice formally documents the sale and creates a bill that the customer owes. This initiates the accounts receivable process, allowing the business to track outstanding payments.
    4. An invoice can be created by clicking the “New” button and selecting “Invoice,” which allows for direct invoice creation. Alternatively, an accepted estimate can be converted into an invoice, carrying over all the details from the estimate.
    5. The “Receive Payment” function in QuickBooks Online is used to record when a customer pays an outstanding invoice. It can be accessed by clicking the “New” button and selecting “Receive Payment,” directly from an open invoice, or from the “Receive Payment” button next to an invoice in the sales tab.
    6. “Undeposited funds” (or “payments to deposit”) is a temporary holding account for customer payments that have been received but not yet deposited into the bank. Businesses use this account when they receive multiple payments that will be deposited together as a single lump sum, making bank reconciliation easier.
    7. A credit memo is used to reduce the amount a customer owes, often due to a mistake or allowance. It is created by clicking “New” and then “Credit Memo,” selecting the customer and the amount of the credit. To apply it, you go to “Receive Payment,” select the customer, and ensure both the invoice and the credit memo are checked.
    8. To record a partial payment, navigate to “Receive Payment,” select the customer and the relevant invoice, and then enter the actual amount received in the “Amount received” field. QuickBooks will then show the remaining balance due on the invoice.
    9. Bank feeds allow users to match downloaded bank transactions with existing invoices in QuickBooks Online. Instead of manually recording payments and deposits, users can find matching invoices for deposits or resolve differences by adding bank fees as negative amounts within the bank feed screen.
    10. Delayed charges are records of services or products provided to a customer that you intend to invoice later. Delayed credits are similar but represent amounts you intend to credit the customer in a future invoice. Businesses use them to track billable activities or credits without immediately creating invoices.

    Essay Format Questions

    1. Discuss the complete accounts receivable workflow in QuickBooks Online, from the initial customer inquiry to the final payment and deposit, highlighting the key steps and their importance.
    2. Explain the different methods for receiving customer payments in QuickBooks Online, including the use of undeposited funds and direct bank deposits, and analyze the advantages and disadvantages of each method for different business scenarios.
    3. Describe how QuickBooks Online facilitates the management of overdue invoices and customer balances, including the use of credit memos and journal entries for adjustments.
    4. Analyze the integration of bank feeds with the accounts receivable workflow in QuickBooks Online, explaining how matching transactions and recording bank fees directly within the bank feed can streamline the accounting process.
    5. Evaluate the features in QuickBooks Online that allow businesses to track and invoice for billable time and expenses, and discuss how these features can improve accuracy and efficiency in the billing process.

    Glossary of Key Terms

    • Accounts Receivable (A/R): The balance of money due to a company for goods or services delivered or used but not yet paid for by customers.
    • Estimate: A non-binding quote provided to a potential customer outlining the cost of proposed goods or services.
    • Invoice: A formal bill issued to a customer for goods or services provided, indicating the amount due and payment terms.
    • Sales Tab: A section in QuickBooks Online that provides an overview of sales transactions, including invoices, payments, and customers.
    • Receive Payment: A QuickBooks Online function used to record payments received from customers against outstanding invoices.
    • Undeposited Funds: A temporary holding account in QuickBooks Online used to store customer payments before they are deposited into a bank account.
    • Bank Deposit: A QuickBooks Online function used to record the transfer of funds from the undeposited funds account or directly from a received payment into a specified bank account.
    • Credit Memo: A document issued to a customer to reduce the amount they owe, often due to returns, allowances, or errors.
    • Bank Feed: A feature in QuickBooks Online that automatically imports transaction data from linked bank and credit card accounts.
    • Find Match: Within the bank feed, this option allows users to link downloaded bank transactions to existing transactions (like invoices and payments) already recorded in QuickBooks Online.
    • Resolve Difference: Within the bank feed matching process, this feature allows users to account for discrepancies between the downloaded bank amount and the matched QuickBooks transactions, often used for recording bank fees.
    • Billable Time: Time tracked by employees or contractors that will be charged to a specific customer.
    • Billable Expenses: Costs incurred by the business that will be passed on and invoiced to a specific customer.
    • Delayed Charge: A record in QuickBooks Online of a service or product provided to a customer that will be added to an invoice at a later date.
    • Delayed Credit: A record in QuickBooks Online of an amount that will be credited to a customer on a future invoice.
    • Journal Entry: A manual accounting entry used to record financial transactions that are not easily captured through standard forms, often used for adjustments like writing off bad debt.
    • Customer Statement: A summary document showing a customer’s outstanding balance, including invoices, payments, and credits over a specific period.

    QuickBooks Online Accounts Receivable Workflow Briefing Document

    Date: October 26, 2023 (Based on the context of the provided text referencing December 2023 and February 2024) Source: Excerpts from “Pasted Text” (Video Transcription on QuickBooks Online Accounts Receivable)

    Overview:

    This briefing document summarizes the main themes, concepts, and procedures for managing accounts receivable (AR) and recognizing income in QuickBooks Online (QBO) as described in the provided video transcription. The video focuses on the end-to-end AR workflow, starting from the pre-sale stage to receiving payments and handling various scenarios like credit memos, billable time, billable expenses, and adjustments. It also touches upon utilizing bank feeds for transaction matching and generating customer statements.

    Main Themes and Important Ideas:

    1. Accounts Receivable Workflow: The core concept is that income is recognized when a sale agreement is made with a customer, potentially leading to a future payment. This necessitates the use of the accounts receivable workflow in QBO.
    • Quote: “accounts receivable simply means that you’re going to recognize a sale whenever the customer agrees to buy something from the business and then possibly you will get a payment on that in the future.”
    • The video emphasizes that if payment is received simultaneously with the sale, the AR workflow can be skipped (covered in another video).
    1. Pre-Sale Cycle and Estimates: The process often begins with an estimate provided to a potential customer.
    • Creating an estimate in QBO involves selecting the customer, detailing products or services with quantities and prices, and saving the estimate.
    • Estimates initially have a “pending” status and can be changed to “accepted” upon customer agreement.
    • Quote: “the first thing you’re going to do is you’re going to give them an estimate essentially you’ll recognize that uh you’re going to make them an offer and then the customer will at some point email you back or call you back and say I’m ready to accept the offer let’s move forward and then we turn that into an invoice later on.”
    1. Invoicing: Once an estimate is accepted, it can be converted into an invoice. Alternatively, invoices can be created directly without an initial estimate.
    • Converting an estimate to an invoice copies all the information, which can then be further edited.
    • Invoices require selecting a customer, specifying products or services, quantities, prices, invoice date, and due date based on payment terms.
    • Quote: “when it gets converted from pending to accepted a link to convert to invoice shows immediately essentially guiding you to the process that you should at this point invoice your client so they can pay you.”
    • QBO tracks invoices, allowing users to filter by all invoices or unpaid invoices.
    1. Receiving Payments: There are multiple ways to record customer payments in QBO.
    • Directly from the “Receive Payment” screen: Accessed via the “+” “New” button, this requires selecting the customer and then choosing the invoice(s) being paid.
    • From the Invoice Screen: Opening an invoice provides an “Actions” button with a “Receive Payment” option, which pre-selects the customer and the invoice.
    • From the Sales > Invoices List: A “Receive Payment” button next to each unpaid invoice allows quick access.
    • From the Sales > Customers List: Within a customer’s details, options include receiving payment.
    1. Undeposited Funds: This is a crucial temporary holding account for customer payments before they are deposited into the bank.
    • It’s recommended when receiving multiple payments that will be deposited together as a lump sum, ensuring bank reconciliation is easier.
    • Quote: “on depositor funds or payments to deposit should be a current asset account designed to hold your customer payments until you make the deposit.”
    1. Recording Bank Deposits: When payments held in “Undeposited Funds” are actually deposited into the bank, a “Bank Deposit” transaction needs to be created.
    • This screen shows all payments in “Undeposited Funds,” allowing users to select the payments included in a specific deposit, choose the bank account, and enter the deposit date.
    • Quote: “essentially what you see here which is this group of transactions that are sitting here under the select the payments included in this deposit these are your undeposited funds and essentially you click on one then the other you see how it adds up…”
    1. Credit Memos: Used to recognize a reduction in the amount a customer owes, without directly editing a previously issued invoice (especially for prior periods).
    • Created via the “+” “New” button, a credit memo is linked to a specific customer and details the reason and amount of the credit.
    • Credit memos don’t automatically apply to invoices; they need to be linked through the “Receive Payment” screen by checking the credit memo for the relevant customer.
    • Quote: “instead of going back and editing the invoice which is generally not suggested especially when it’s from previous periods what you want to do is you want to recognize a reduction of that account’s receivable a reduction of the money the customer owes you by creating a credit memo.”
    1. Petty Cash: Payments can be recorded as being received into a petty cash account instead of a bank account or undeposited funds, useful for tracking cash on hand.
    • Funds can later be transferred from petty cash to a bank account if needed.
    1. Handling Credit Card Fees: When a customer pays by credit card, the deposited amount in the bank might be less than the invoice amount due to transaction fees.
    • The full payment is initially recorded (often to Undeposited Funds).
    • During the bank deposit recording, the fee is entered as a negative amount, allocated to a “Merchant fees” or similar expense account, to reconcile the deposit with the bank statement.
    • Quote: “that difference is a fee so if I take $1,000 minus 97131 I get a amount of 28.6 and that’s the amount that the bank took from you to be able to receive uh a payment through a credit card now that’s going to be a negative amount so that’s a really important piece…”
    1. Matching Bank Feed Transactions: QBO’s bank feed allows matching downloaded bank transactions to existing invoices and payments, streamlining reconciliation.
    • Instead of manually recording payments and deposits, users can “Find Match” for a bank deposit and select the corresponding invoices.
    • For credit card deposits with fees, the “Resolve the difference” option in the “Find Match” screen allows entering the fee as a negative amount linked to a merchant fees expense account.
    1. Billable Time: In QBO Essentials and above, time spent on customer projects can be tracked and marked as billable.
    • Time activities are entered, linked to a customer, and marked as billable with a specific rate.
    • When creating an invoice for that customer, QBO displays any pending billable time that can be added to the invoice.
    • Quote: “keep in mind that this doesn’t automatically invoice your customer it just keeps it pending for you to be able to invoice them later in the future when it’s time to invoice them.”
    1. Delayed Charges and Credits: Available in QBO Essentials and above, these features allow recording services provided or overcharges without immediately creating an invoice or credit memo.
    • Delayed charges serve as reminders to invoice for specific services later.
    • Delayed credits track amounts to be credited to a customer in the future.
    • When invoicing, delayed charges and credits for a customer can be added to the invoice.
    1. Billable Expenses: In QBO Plus and above, expenses can be assigned to a specific customer and marked as billable.
    • When creating an invoice for that customer, the billable expense can be added to the invoice, allowing for reimbursement.
    • Quote: “with QuickBooks Online plus you’re able to assign an expense to a specific customer so then when we Mark that expense billable uh you’ll be able to create an invoice with that specific line item.”
    1. Adjusting Old Accounts Receivable with Journal Entries: An advanced technique, typically used by accounting professionals, to write off uncollectible balances.
    • A journal entry is created to credit the Accounts Receivable account (reducing the balance) and debit an expense account like “Bad Debt” or a sales-related contra-account.
    • This journal entry then needs to be applied to the old invoice using the “Receive Payment” screen with a zero amount received.
    1. Customer Statements: QBO allows generating statements to provide customers with a summary of their invoices, payments, and outstanding balances.
    • Different types of statements are available:
    • Balance Forward: Shows the opening balance, new charges, payments, and the closing balance.
    • Transaction Statement: Lists all transactions within a specified date range.
    • Open Item Statement: Shows only the unpaid invoices.
    • Users should explore each type to determine the most suitable one for their needs and their customers’ understanding.

    Key Takeaways:

    • QuickBooks Online offers a comprehensive suite of tools for managing accounts receivable, from initial customer engagement to final payment.
    • Understanding the different stages of the AR workflow (estimate, invoice, payment) is crucial for accurate income recognition.
    • Utilizing features like “Undeposited Funds” and bank feed matching can significantly improve efficiency and accuracy in reconciling payments.
    • Credit memos and journal entries provide mechanisms for adjusting customer balances when necessary.
    • Billable time and expenses allow for accurate invoicing of services and costs incurred on behalf of customers.
    • Customer statements are essential for communicating account status and history to clients.

    Next Steps:

    • Review the full video for detailed visual guidance on performing these actions in QuickBooks Online.
    • Consult additional resources mentioned in the video description for related topics like recording income without using the AR workflow, managing accounts payable, and deeper dives into bank feeds and reports.
    • Consider practicing these workflows in a QBO test environment to gain hands-on experience.
    • If using advanced techniques like journal entries for AR adjustments, ensure a thorough understanding of accounting principles or consult with an accounting professional.

    Frequently Asked Questions: Managing Income with QuickBooks Online Accounts Receivable Workflow

    1. What is the accounts receivable workflow in QuickBooks Online, and when should I use it?

    The accounts receivable (A/R) workflow in QuickBooks Online is used to manage income recognition when you make a sale to a customer who agrees to buy now and potentially pay later. This involves several steps, starting with a pre-sale cycle (like creating an estimate), followed by invoicing the customer for the goods or services provided, and finally recording the payment when it is received. You should use this workflow when you don’t receive payment at the exact time of the sale. If you receive payment immediately, you can use a simpler method of recording income directly as a sales receipt or within the bank feed.

    2. What is the typical pre-sale cycle within the accounts receivable workflow in QuickBooks Online?

    The pre-sale cycle often begins when a customer expresses interest in purchasing something from your business. The first step is usually to create an estimate (or quote) outlining the proposed products or services, their quantities, and prices. If the customer accepts the estimate, you then convert the estimate into an invoice, which is the official bill you send to the customer requesting payment.

    3. How do I create and manage invoices in QuickBooks Online?

    You can create an invoice in QuickBooks Online by clicking the “New” button and selecting “Invoice.” You’ll then choose an existing customer or add a new one, specify the products or services being sold (including descriptions, quantities, and rates), and set the invoice date and due date based on your payment terms. You can customize the invoice and then save it, save and send it to the customer, or print it. Once created, you can track your invoices in the “Sales” tab under “Invoices,” where you can filter by all invoices or just unpaid ones to manage your accounts receivable.

    4. What are the different ways to record customer payments in QuickBooks Online, and what is “undeposited funds”?

    There are several ways to record customer payments:

    • By clicking “New” and then “Receive Payment,” which allows you to select the customer, payment date, payment method, and the invoices being paid.
    • Directly from an invoice by clicking the “Receive Payment” option within the invoice actions.
    • From the “Sales” tab under “All Sales” or “Customers,” where you can find invoices and related payment options.

    Undeposited funds (or sometimes “Payments to deposit”) is a temporary holding account for customer payments that you’ve received but haven’t yet deposited into your bank account. This is particularly useful if you receive multiple payments that you deposit together as a single sum. By using undeposited funds, you can then record a single bank deposit in QuickBooks that matches your bank statement, making reconciliation easier.

    5. How do I handle situations where a customer is due a credit or when an invoice needs adjustment after it has been issued?

    For situations where you need to reduce the amount a customer owes without directly editing a previously issued invoice (especially from a prior accounting period), you can create a credit memo. A credit memo reduces the customer’s outstanding balance. To apply a credit memo to an invoice, you typically go to “New,” then “Receive Payment,” select the customer, and ensure both the invoice and the credit memo are checked. QuickBooks will then link the credit memo to the invoice, reducing the outstanding balance.

    6. How can I account for bank fees or transaction fees when customers pay via credit card in QuickBooks Online?

    When you receive a credit card payment, the amount deposited into your bank might be less than the invoice total due to transaction fees charged by the bank or payment processor. To accurately record this, you can initially record the full payment received into “undeposited funds.” When you then record the bank deposit (“New” > “Bank Deposit”), you’ll enter the actual amount deposited. The difference can be accounted for by adding a line item to the deposit screen with a negative amount, categorized to an expense account such as “Merchant Fees” or “Transaction Fees.” You can optionally specify the payment processor (e.g., Stripe) as the “Payee.”

    7. How can I link billable time and expenses to customer invoices in QuickBooks Online?

    QuickBooks Online (Essentials and Plus versions) allows you to track billable time and expenses. You can enter billable time through “New” > “Single time activity,” associating the time with a specific customer, service, and billable rate. When you later create an invoice for that customer, QuickBooks will show a drawer on the right side listing any pending billable time that can be added to the invoice. Similarly, in QuickBooks Online Plus, you can mark expenses as billable when entering them (“New” > “Expense”) by checking the “Billable” box and assigning the expense to a customer. These billable expenses will also appear as items to add when creating an invoice for that customer.

    8. What are delayed charges and delayed credits, and how can they be used for invoicing?

    Delayed charges and delayed credits (available in QuickBooks Online Essentials and above) are non-posting transactions used to track services or credits that you want to invoice to a customer at a later date. A delayed charge records work or services provided without immediately creating an invoice. A delayed credit records an amount you intend to credit to a customer’s future invoice. You can enter these through the “New” button. When you’re ready to invoice the customer, you can create a new invoice, and QuickBooks will display any outstanding delayed charges and credits for that customer, allowing you to add them to the invoice. This is useful for consolidating multiple charges or credits into a single invoice, often done at the end of a month or project.

    QuickBooks Online: Managing Income Recognition

    Based on the video transcript you provided, QuickBooks Online offers a comprehensive system for managing income recognition through the accounts receivable workflow. This workflow is particularly useful when a sale is recognized before payment is received.

    Here’s a breakdown of the key aspects of using QuickBooks Online for this purpose, as described in the video:

    • Pre-Sale Activity: Estimates:
    • The process often begins with creating an estimate for a customer who expresses interest in buying a product or service.
    • You can create estimates by selecting the customer from a drop-down menu or adding a new customer on the fly, including details like name, address, phone number, and email.
    • Estimates can include a billing and a separate shipping address.
    • QuickBooks automatically assigns estimate numbers, but you can customize this sequence.
    • You can specify the products or services being quoted, including quantity, rate, and description.
    • For QuickBooks Online Plus users, inventory items can also be added to estimates.
    • Estimates initially have a pending status. Once the customer accepts, the status can be changed to accepted, which then provides a direct link to convert the estimate into an invoice.
    • Creating Invoices:
    • Invoices can be created directly or by converting an accepted estimate. Converting an estimate automatically copies over all the information.
    • You can still edit an invoice after it’s created from an estimate. Linked transactions are highlighted, showing the origin of the invoice.
    • When creating an invoice, you can select the invoice date and set a due date based on payment terms (e.g., net 15, 30, 60 days), which is fundamental to accounts receivable management.
    • You can add products and services to the invoice, specifying descriptions, rates, and quantities.
    • Sales tax can be enabled and calculated on taxable items (though this video focuses on non-taxable examples).
    • Invoices can be saved, saved and closed, or reviewed and sent directly to the customer via email or printed and mailed. Sending an invoice officially means the customer owes you money.
    • Managing Invoices:
    • All created invoices can be found under the Sales tab, in the Invoices section.
    • You can filter the invoice list to view all invoices or only unpaid invoices, which represent your accounts receivable.
    • The system displays the total amount due and indicates if any invoices are overdue based on the set terms.
    • Receiving Payments:
    • There are several ways to record customer payments in QuickBooks Online.
    • You can use the New button and select Receive Payment to open a blank payment screen where you choose the customer and then see their outstanding invoices.
    • You can also initiate payment recording directly from the invoice screen via an Actions button or from the Sales > All Invoices list using a Receive Payment button next to the invoice.
    • Another method is through the Customers list, where you can find an invoice and select Receive Payment from the options.
    • When recording a payment, you specify the payment date and payment method (e.g., check, credit card). You can customize the list of payment methods.
    • If you have QuickBooks Payments enabled, payments made online by customers can be automatically recorded.
    • For checks, you can record the customer’s check number.
    • You can record partial payments if a customer underpays.
    • A crucial decision when receiving payment is where to deposit the funds:
    • Directly to a bank account if you deposit individual payments immediately.
    • To Undeposited Funds (or Payments to Deposit) if you receive multiple payments and deposit them together as a lump sum. This helps in bank reconciliation.
    • Recording Bank Deposits:
    • If you use the Undeposited Funds account, the next step is to record the bank deposit by clicking New > Bank Deposit.
    • QuickBooks will display all payments held in Undeposited Funds.
    • You select the payments included in a specific deposit and the date the deposit was made to the bank, as well as the bank account it went into. This allows you to match your QuickBooks records with your bank statements when reconciling.
    • Handling Credit Memos:
    • If you need to issue a credit to a customer (e.g., for a mistake), you can create a credit memo. This reduces the amount the customer owes.
    • Credit memos are created via the New button > Credit Memo and are linked to a specific customer and the product/service for which the credit is being issued.
    • Credit memos do not automatically apply to invoices. You need to go to New > Receive Payment, select the customer, and then ensure the credit memo is checked to apply it to the relevant invoice. The “amount received” in this case might be zero, as you’re just matching the credit to the debt.
    • Managing Cash Payments with Petty Cash:
    • If a customer pays in cash and the cash is not immediately deposited, you can record the payment into a petty cash account (which you might need to create) instead of a bank account or Undeposited Funds.
    • Later, when the cash is deposited into the bank, you can record a transfer from the petty cash account to the bank account.
    • Handling Credit Card Fees:
    • When receiving credit card payments, banks often charge a transaction fee, resulting in a net deposit amount that is less than the invoice total.
    • You can record the full payment initially to Undeposited Funds.
    • Then, when recording the bank deposit (New > Bank Deposit), you select the credit card payment and enter the actual amount received from the bank.
    • The difference is the bank fee, which you record as a negative amount on an additional line in the bank deposit screen.
    • You categorize this negative amount to an appropriate expense account, such as Merchant Fees, Transaction Fees, or Credit Card Fees. You can optionally specify the bank or payment processor (e.g., Stripe) as the vendor.
    • Utilizing Bank Feeds:
    • QuickBooks Online allows you to connect to your bank accounts and download transactions via bank feeds.
    • Instead of manually recording payments and deposits, you can match bank feed deposits with existing invoices. By clicking on a deposit transaction in the bank feed, you can select Find Match and then choose the invoices that correspond to that deposit.
    • When a bank feed deposit reflects a credit card payment with a fee, you can match the gross payment to the invoices and then use the Resolve Difference option to add a negative amount for the fee, categorizing it to the merchant fees expense account.
    • Working with Billable Time and Expenses:
    • Billable Time (requires QuickBooks Online Essentials or higher): You can track time spent on a customer’s work and mark it as billable. This time can then be easily added to an invoice for that customer.
    • Delayed Charges and Credits (requires QuickBooks Online Essentials or higher): You can record services or charges incurred for a customer without immediately invoicing them using delayed charges. Similarly, you can record delayed credits. These can be compiled and added to an invoice at a later date.
    • Billable Expenses (requires QuickBooks Online Plus or higher): You can assign expenses (e.g., shipping costs) to a specific customer and mark them as billable. These expenses can then be added to the customer’s invoice for reimbursement.
    • Adjusting Accounts Receivable with Journal Entries:
    • For advanced users (like accounting professionals), journal entries can be used to directly adjust accounts receivable balances, for example, to write off old, uncollectible debts. This involves debiting a bad debt expense (or similar) account and crediting the accounts receivable account for the customer.
    • After creating the journal entry, you still need to go to New > Receive Payment, select the customer, and match the journal entry to the outstanding invoice to clear it from the accounts receivable aging report.
    • Creating Customer Statements:
    • QuickBooks Online allows you to generate customer statements that show the history of invoices and payments for a specific customer.
    • You can choose from different types of statements, such as Balance Forward, Transaction Statement, and Open Item Statement, each presenting the information in a slightly different way. You should review each type to determine which best suits your needs and your customers’ understanding.

    In summary, QuickBooks Online, as described in the video, provides a robust set of tools for managing the entire accounts receivable cycle, from creating initial estimates to receiving and recording payments, handling various payment scenarios, and generating customer statements. It also includes features for handling more complex situations like credit memos, petty cash, credit card fees, billable time and expenses, and adjustments via journal entries. The integration with bank feeds further streamlines the process of matching payments to invoices.

    QuickBooks Online Accounts Receivable Management

    Based on the video transcript and our previous discussion, Accounts Receivable (AR), as described in the context of QuickBooks Online, is the process of recognizing income when a sale is made (i.e., when a customer agrees to buy something) and managing the money owed by customers who will pay in the future. It’s a crucial aspect of business operations when payment is not received at the time of the sale.

    Here are the key concepts related to Accounts Receivable as discussed in the source:

    • Triggering Accounts Receivable: The AR process begins when a sale is recognized, often documented through an estimate provided to the customer. Once the customer accepts the offer, the estimate is converted into an invoice. The act of sending an invoice officially signifies that the customer owes the business money.
    • Managing Outstanding Invoices: QuickBooks Online provides tools to keep track of all outstanding invoices. The Sales tab allows users to view a list of all invoices, filter them by status (e.g., unpaid), and see the total amount due. The system also tracks due dates based on the payment terms set on the invoices.
    • Receiving Payments: A significant part of AR management is recording payments from customers. QuickBooks Online offers multiple ways to do this, ensuring that the payment is correctly applied to the outstanding invoice.
    • Payments can be recorded as going directly to a bank account or to an interim account called Undeposited Funds (or Payments to Deposit). The latter is recommended when multiple payments are deposited together.
    • QuickBooks Payments, if enabled, can automate the recording of online payments.
    • Applying Payments to Invoices: When recording a payment, QuickBooks allows you to select the specific invoice(s) the payment is for, including the option for partial payments.
    • Handling Overpayments/Underpayments: While not explicitly detailed, the ability to record partial payments suggests the system can handle situations where the payment doesn’t exactly match the invoice amount. Credit memos, discussed below, can address overpayments or billing errors indirectly.
    • Credit Memos: When a business needs to reduce the amount a customer owes after an invoice has been issued (e.g., due to a mistake), a credit memo is created. Importantly, credit memos need to be manually applied to the relevant invoice through the receive payment screen.
    • Adjusting Accounts Receivable: In more advanced scenarios, such as writing off old, uncollectible debts, journal entries can be used to directly adjust the accounts receivable balance. These adjustments then need to be applied to the corresponding invoices using the receive payment function.
    • Reporting and Review: QuickBooks Online provides reports like the Accounts Receivable Aging report to help businesses understand how long invoices have been outstanding. Additionally, customer statements can be generated to show customers their outstanding balances and payment history.
    • Integration with Bank Feeds: QuickBooks Online allows for the matching of bank deposits with outstanding invoices recorded in the system, streamlining the AR process by reducing the need for manual payment recording in some cases. This also includes handling bank fees associated with credit card payments.
    • Billable Time and Expenses: For service-based businesses, QuickBooks allows the tracking of billable time and expenses, which are then converted into invoices, effectively managing these aspects within the AR framework.
    • Delayed Charges and Credits: These features allow for the recording of services or credits that will be invoiced to the customer at a later date, ensuring that all billable activities are captured within the AR cycle.

    In essence, Accounts Receivable management within QuickBooks Online, as described in the source, is a systematic approach to tracking sales made on credit, ensuring timely invoicing, diligently recording customer payments, and managing any necessary adjustments or credits to maintain accurate financial records. The various workflows and features aim to streamline this process, providing businesses with a clear overview of the money owed to them.

    QuickBooks Online: Invoicing Customers

    Based on the video transcript, invoicing customers is a central part of the accounts receivable workflow in QuickBooks Online. It’s the process of formally billing a customer for goods sold or services rendered, thereby establishing the amount they owe to the business.

    Here’s a breakdown of how invoicing customers is discussed in the source:

    • Creating an Invoice:
    • An invoice can be created directly or by converting an existing estimate that has been accepted by the customer.
    • To create a new invoice directly, you can click on the “New” button and then select “Invoice”.
    • You can select an existing customer from a drop-down menu or add a new customer on the fly by providing their name and other details like address, phone number, and email.
    • Each invoice has an invoice number, which QuickBooks automatically sequences but can be customized.
    • You can set the invoice date to reflect when the service was provided or the product was delivered.
    • The due date for payment can be selected based on predefined net terms (e.g., 15, 30, or 60 days from the invoice date), which QuickBooks will calculate.
    • Adding Products and Services:
    • On the invoice screen, you select the specific products or services being sold to the customer.
    • You can specify the quantity and rate for each item.
    • A description of the product or service can be added to provide clarity for the customer.
    • QuickBooks Online Plus allows for the inclusion of inventory products on invoices.
    • The system automatically calculates the total amount due based on the quantities and rates of the items.
    • Saving and Sending Invoices:
    • Once the invoice is complete, you have several options:
    • “Save”: This saves the invoice within QuickBooks Online without sending it.
    • “Save and Close”: This saves the invoice and closes the invoice window.
    • “Review and Send” or “Save and Send”: These options allow you to email the invoice directly to the customer or print it for mailing.
    • Link to Estimates:
    • When an invoice is created from an estimate, QuickBooks copies over all the information from the estimate, including products, services, descriptions, and prices.
    • The invoice maintains a link back to the original estimate, creating a transaction history for tracking.
    • Creating Invoices Without Estimates:
    • It’s important to note that creating an estimate is not a mandatory step in the invoicing process. You can create invoices directly without any prior estimate.
    • Managing Invoices:
    • After invoices are created, they can be found in the “Sales” tab under “Invoices”.
    • You can view a list of all invoices or filter them to see only unpaid invoices, which represent the amounts in accounts receivable.
    • Invoicing Billable Time and Expenses:
    • QuickBooks Online (Essentials and above) allows you to track billable time and then add these time entries to a customer’s invoice.
    • Similarly, in QuickBooks Online Plus, you can mark expenses as billable to a specific customer and then include these expenses on their invoice for reimbursement.
    • Delayed charges and delayed credits can be used to record services or credits that will be added to a customer’s invoice at a later date. When you create an invoice for that customer, these delayed items will appear as potential additions.

    In summary, the source emphasizes that invoicing is the formal step in the accounts receivable process where a business communicates to its customers the details of a sale and the amount due. QuickBooks Online offers various features to create, customize, send, and manage these invoices, ensuring that businesses can effectively track and collect the money owed to them.

    QuickBooks Online: Receiving Customer Payments

    Based on the video transcript, receiving payments is a crucial step in the accounts receivable workflow in QuickBooks Online. The source outlines several ways to record customer payments and important considerations during this process.

    Here’s a detailed discussion of receiving payments as described in the source:

    • Multiple Ways to Initiate Receiving a Payment:
    • You can click the “New” button and then select “Receive Payment” under the “Invoice” section. This opens a blank “Receive Payment” screen where you need to select the customer.
    • You can go to the “Sales” tab, then “Invoices”, and click the “Receive Payment” button located next to the specific invoice you want to record a payment for. This method automatically populates the customer and the invoice details.
    • While viewing an invoice, you can click the “Actions” button and then select “Receive Payment”. This also automatically selects the customer and the invoice.
    • From the “Customers” list (under the “Sales” tab), you can select a customer, find the specific invoice, and choose “Receive Payment” from the available options.
    • Recording Payment Details on the “Receive Payment” Screen:
    • You need to select the customer who made the payment. QuickBooks will then display all outstanding invoices for that customer.
    • Enter the date on which you received the payment.
    • Choose the payment method from a pre-built list or create your own (e.g., check, cash, credit card). This is primarily for internal tracking.
    • If the payment was made by check, you can record the customer’s check number.
    • Handling Full and Partial Payments:
    • In the “Amount Received” field, you can enter the total amount the customer paid.
    • If the customer made a partial payment, you enter the partial amount and then select the invoice(s) you want to apply the payment to, specifying the amount for each if necessary.
    • If the customer paid the full amount, ensure that the amount entered matches the total due on the selected invoice(s).
    • The Importance of the “Deposit To” Account:
    • Before saving the payment, you need to decide where the funds are initially recorded.
    • Directly to a Bank Account: If you deposit the payment directly into your bank account as a single transaction, you can select your bank account in the “Deposit To” field.
    • Undeposited Funds (or Payments to Deposit): If you receive multiple payments that will be deposited together as a lump sum, you should select “Undeposited Funds” (or “Payments to Deposit”) as the “Deposit To” account. This is a temporary holding account. Using this method helps ensure that your QuickBooks records match your bank statements when you make the actual deposit. To record the deposit of these funds into your bank account, you’ll later use the “Bank Deposit” function under the “New” button.
    • QuickBooks Payments: If you have QuickBooks Payments enabled, the system can automatically record payments received online or through credit card charges processed within QuickBooks.
    • Applying Payments to Invoices: When you select a customer on the “Receive Payment” screen, QuickBooks will list their outstanding invoices. You need to check the box next to the invoice(s) being paid. The amount of the payment will be automatically applied to the selected invoices, but you can adjust these amounts if it’s a partial payment.
    • Receiving Cash Payments and Using a Petty Cash Account: If you receive a cash payment that is not immediately deposited into the bank, you can create a “Petty Cash” account (or another similar account) and select that as the “Deposit To” account. Funds in this account can later be transferred to the bank or used for business expenses (although managing petty cash involves a separate workflow).
    • Handling Credit Card Payments and Bank Fees:
    • When a customer pays with a credit card, you might receive a net amount in your bank account after the bank deducts a transaction fee.
    • The source recommends recording the full payment amount as received (and potentially depositing it to “Undeposited Funds”).
    • The bank fee is then recorded as a separate transaction during the “Bank Deposit” process. When making the bank deposit for the credit card payment, you’ll enter the actual amount received from the bank and then add a negative line item for the merchant fees (or transaction fees), specifying the appropriate expense account (e.g., “Merchant Account Fees”) and optionally the vendor (e.g., Stripe).
    • Matching Bank Feed Transactions: QuickBooks allows you to connect to your bank accounts and use the bank feed to match downloaded transactions with entries in QuickBooks.
    • If a deposit in the bank feed corresponds to one or more invoices, you can use the “Find Match” option to select the relevant invoices instead of categorizing the deposit.
    • When the total of the matched invoices doesn’t equal the bank deposit amount (due to fees), you can use the “Resolve the Difference” option to add a line for the fee, similar to the bank deposit process for credit card payments.
    • Applying Credit Memos: Even though you’re not receiving a cash payment, you use the “Receive Payment” screen to apply a credit memo to an outstanding invoice. By selecting the customer and ensuring both the invoice and the credit memo are checked, QuickBooks will match them, reducing the outstanding balance.
    • Applying Journal Entries: Similarly, to clear an old outstanding balance using a journal entry (which directly reduces the accounts receivable balance), you use the “Receive Payment” screen. Select the customer, and with both the old invoice and the journal entry checked, QuickBooks will apply the journal entry, resulting in a zero amount received but effectively closing the invoice.
    • Saving the Payment: Once all the necessary information is entered and the payment is correctly applied, click “Save and Close” or “Save and New” to record the payment.

    The source emphasizes the importance of choosing the correct “Deposit To” account to ensure accurate bank reconciliation. It also highlights that while there are multiple workflows to initiate receiving a payment, they all lead to the same “Receive Payment” screen for recording the details.

    QuickBooks Online: Recording Bank Deposits

    Based on the video transcript, bank deposits are a critical part of the accounts receivable workflow in QuickBooks Online, representing the final step where customer payments are recorded as entering your bank account. The source details several scenarios and methods for handling bank deposits.

    Here’s a breakdown of how bank deposits are discussed:

    • Depositing Payments Directly to the Bank Account:
    • If you receive a single payment and deposit it directly into your bank account as one transaction, you can select your bank account in the “Deposit To” field on the “Receive Payment” screen. In this scenario, the payment record in QuickBooks directly reflects the deposit in your bank.
    • Using Undeposited Funds for Later Deposits:
    • The source strongly recommends using the “Undeposited Funds” (or sometimes “Payments to Deposit”) account when you receive multiple customer payments that will be deposited together as a single lump sum at the bank. This is a temporary holding account.
    • The rationale is to ensure that your QuickBooks records accurately match your bank statements. When you look at your bank statement, you’ll see one total deposit, and recording individual payments directly to the bank would not reflect this consolidated deposit.
    • Recording the Actual Bank Deposit from Undeposited Funds:
    • To record the consolidated deposit in QuickBooks after using “Undeposited Funds,” you click on the “New” button and then select “Bank Deposit” under the “Other” section.
    • The “Bank Deposit” screen will display all the payments you have previously recorded into the “Undeposited Funds” account.
    • You then select the individual payments that were included in the actual bank deposit. QuickBooks will show the total amount of the selected payments.
    • You need to enter the date of the actual deposit into your bank account and choose the bank account where the funds were deposited.
    • Finally, you click “Save and Close” to record the bank deposit. This process moves the money from the temporary “Undeposited Funds” account to your designated bank account in QuickBooks, matching your bank records.
    • Handling Credit Card Payments and Bank Fees During Deposit:
    • When you receive credit card payments, the funds deposited into your bank account might be less than the total amount charged to customers due to bank transaction fees.
    • The suggested workflow is to initially record the full credit card payment as received (potentially to “Undeposited Funds”).
    • When you go to record the “Bank Deposit” for these credit card payments, you will enter the actual net amount that was deposited by the bank.
    • To account for the difference (the bank fee), you add a negative line item on the “Bank Deposit” screen.
    • For this negative entry, you need to select the appropriate expense account for merchant fees or transaction fees (e.g., “Merchant Account Fees”). You can optionally specify the bank or payment processor (e.g., Stripe) as the payee (entered as a vendor).
    • The negative amount of the fee will reduce the total deposit amount in QuickBooks to match the actual amount deposited in the bank.
    • Matching Bank Feed Transactions to Invoices (Skipping Manual Deposit Recording):
    • QuickBooks Online allows you to connect to your bank account and use the bank feed to download transactions.
    • If a deposit appears in the bank feed that corresponds to one or more customer payments (and you haven’t manually recorded the “Receive Payment” and “Bank Deposit” steps), you can use the “Find Match” option.
    • This allows you to select the open invoices that the deposit is intended to pay. By matching the deposit to the invoices, you effectively record the payment and the deposit simultaneously.
    • If a bank feed deposit for credit card payments is for a lesser amount than the total of the matched invoices, you can use the “Resolve the Difference” feature to add a negative entry for the merchant fees, similar to the manual bank deposit process.
    • Transferring Funds from Other Accounts to the Bank:
    • The source briefly mentions transferring funds into the bank from other accounts, such as a petty cash account. This is done using the “Transfer” function under the “New” button, specifying the source account (e.g., Petty Cash) and the destination bank account, along with the amount and date of the transfer.

    In summary, the video highlights that accurately recording bank deposits is essential for maintaining correct financial records in QuickBooks Online and for successful bank reconciliation. It emphasizes the importance of using “Undeposited Funds” for batched payments and correctly accounting for bank fees associated with credit card transactions, either through the manual “Bank Deposit” function or by utilizing the “Find Match” and “Resolve the Difference” features within the bank feed.

    QuickBooks Online: Recording Income/Invoices (Accounts Receivable)

    The Original Text

    in this video we’re going to talk about how to recognize income in QuickBooks Online using the accounts receivable workflow accounts receivable simply means that you’re going to recognize a sale whenever the customer agrees to buy something from the business and then possibly you will get a payment on that in the future if you were recognizing a sale at the same time that you’re getting paid then there would be no need for you to use the accounts receivable workflow and you want to check out another video that I have focused on recognizing income or recording income in QuickBooks by skipping everything we’re going to talk about in this video so check that video out the link should be on description we’re going to get started in QuickBooks online and we’re going to start with sort of the pre-sale cycle so a customer calls you and says hey I want to buy something from you a product or a service and the first thing you’re going to do is you’re going to give them an estimate essentially you’ll recognize that uh you’re going to make them an offer and then the customer will at some point email you back or call you back and say I’m ready to accept the offer let’s move forward and then we turn that into an invoice later on so let’s start by creating an estimate I’m just going to click on the drop- down menu select the customer I want to send the estimate to I could click on add new and create the customer on the fly so if I have a new customer and her name is Mary S Smith and I can add her address her phone number email all that information and then I click on Save and then that customer gets loaded into my database in QuickBooks you can have a build to address and also a ship to address so if you’re shipping products or delivering services on site you can use that shipping address to identify that then the estimate number is going to follow a natural sequence QuickBooks will start when one01 but you can create your own sequence if you want to when you’re first getting started so I’m going to do 4,000 501 and that would be the first one then every time I do an estimate then the next one will follow soon then I’m going to click on the drop- down menu to confirm the estimate date and then we’re going to scroll down onto products and services and then we pick the specific product and service that we are estimating or quoting this customer I’m going to pick Services here and I’m going to do two two quantity2 $75 and then on the description I’m going to put $75 per hour for support okay whatever service you’re providing you just put there the description of what you’re what you’re want to sell that customer you can add any additional notes any additional lines if you want to if you’re working with QuickBooks Online plus you can even add inventory that you’re selling them you can actually sell inventory products and then at the end simply we have an estimate for $150 I’m going to go ahead and click on Save and now the estimate has been saved into the system now by default estimates start in pending status so hopefully your customer will say yes agree to buying this service from you and essentially the best thing to do is to switch the estimate from pending down to accepted now notice that when it gets converted from pending to accepted a link to convert to invoice shows immediately essentially guiding you to the process that you should at this point invoice your client so they can pay you so I’m going to click on convert to invoice and then QuickBooks will take the same estimate that we just created and essentially create the invoice for you copy over all the information like the products and the services that you’re selling including descriptions prices all that stuff you actually allowed to change uh an invoice after the estimate so let’s say this actually took three hours and at two hours you can make that change now you do have a um a connected transaction next to it you see that is highlighted green letting you know that that’s a link transaction and if I screw up to the top it says link transactions as well I can actually click on that and it’ll open the estimate for me so it creates this history so you know exactly that this invoice came from an estimate originally then we can accept uh the invoice number where it is we can change the invoice date to whenever you actually provided that service or deliver that product you can select the due date uh based on your net terms so if it’s you know 15 days QuickBooks will calculate 15 days from the invoice date if you select 30 or 60 it will calculate the due date from that invoice date and that’s the essence of account receivable management which is you’re generating a bunch of invoices and you’re keeping track of the customers that owe you money and eventually they need to pay you so once we’re done we can either click save or we can click on review and send if you want to actually email the invoice to our customer so we’re going to go ahead and send the invoice to a customer or print it and mail it to them and that’s it now that customer officially owes us money now I want to create an invoice without regard of the estimate so you can see that that workflow flow you actually don’t need to create the estimate prior that was just an example for those that need to do that so I’m going to click on the new button on the top left and then click on invoice and that can take me straight into the invoice screen no linkages or workflow from an estimate if I click on the drop down menu I can pick a customer from the existing list or maybe a different customer let me pick customer a and then I’m going to scroll down and then select the products and services that I want to sell that customer so let’s say I want to sell this customer customer services I’m going to put um hourly support and I’m going to put here level two Tech and let’s say that we have for our level two technician we actually charge uh $100 an hour so I’m going to put here three hours for $100 an hour and you see that the total adds up to 300 now if I also have uh maybe a product that I’m selling them where there’s inventory or not you can add that additional line and we can put here miscellaneous cables and let’s say say this is a charge for $25 now if you have sales tax enabled and I have an entirely different video that focuses on sales tax I’ll put the link in the description whichever item you mark As taxable QuickBooks will calculate tax for that item I’m going to go ahead and uncheck both the items because we’re going to make the assumption that these items are not taxable or the sale is not taxable here at the right hand side you have some information about billable time we’re actually going to go back to that so now we have a total down here of $325 for the invoice again we can save it we can do save and close or we can save and send to our customers let me click on Save and close and now we have officially created uh two invoices now once you create your invoices you can actually go into the sales tab on the left hand side and then click on where it says invoices and then you’re going to get a list of all the invoices that you have in the system you can actually filter by all invoices including every invoice you ever created and you’ve been paid for already or just invoices are unpaid which are the ones that are currently in accounts receivable you see up here that there’s a $550 due it says not yet that means they’re not overdue yet and if you see down here in the bottom you get to see both amounts 225 and 325 we just created notice that there’s a status here in terms of due date based on what terms we use to create those invoices so that’s that was the first step just essentially just creating an invoice the Second Step would be to receive payments so there’s a couple of ways to receive payments we can simply go into the new button on the left hand side and then under invoice there is a button that says receive payment we can start the process from there if we start the process from there we’re going to go into a blank receive payment screen and then I have to click from the drop- down menu which customer paid me so I’m going to go ahead and select Mary Smith and then once I select the customer QuickBooks will show show me all the outstanding invoices are for this specific customer I’m going to pick the date in which the customer the date that I actually received the payment the payment method and there’s a pre-built set of payment methods you can create your own this is just for internal tracking so let’s say I’m going to put check and note if you have payments enabled in QuickBooks Online which is an additional service you can actually get a credit card number from your customer and charge it electronically through here or you can send the invoice to the customer they can pay you and if you use that service the payment gets automatically recorded in your behalf so you actually don’t have to go into this extra step and record the payment because QuickBooks is smart enough to know that if the customer paid you through their system they might as well create the payment for you now when you receive the payment and let’s say for example it’s a check I can put here the check number that the customer gave me so their check number I can put in here and there where it says amount received I can either select a part partial amount so if your customer underpay you you can put let’s say if they only pay you $100 you receive a partial amount and then you select the invoice that you want to apply the $100 to and then you select um the amount that you’re going to apply to that specific invoice if the customer pay you in full just type there the full amount and the full amount here in the top should um calculate for you as well so make sure that if they did pay you in full that you have both the full amount in the top and then the full amount up apply to the specific invoice you want to apply to now before we click save and close and accept this payment it’s really important to make the decision and this this is based on what’s happening with your business on whether or not this specific payment is going to go straight into the bank one to one so you’re going to have one payment and you’re going to make one deposit with a single payment or if you often receive multiple payments through the week and maybe once or twice a week you take a bunch of payments and make one single deposit now maybe you do electronic deposits with your with with your phone or with a scanner but essentially if you lump all the deposits together uh into a single deposit and then when you look at the bank statement you don’t see each individual payment you see one lump sum deposit then what you want to use instead of using the bank account as a deposit to account you want to use this account called undeposited funds so I’m going to do an example of that for now I’m just going to put it here in this Chase payroll account and we’re just going to have that to 25 bucks itself go in there and then when we do the other example it’s going to make sense when we show you that and then I click on Save and close and then essentially that completes the account’s receivable workflow when we go from in this case from estimate to invoice and then for to payment straight into the bank now let’s create one more invoice I’m going to go to new invoice and then I’m going to select a different customer click on the drop down menu and click customer B I’m going to select my services item and then put here here 5 hours at $75 an hour and we’ll put here hourly support again and then we’ll click on Save and close so now we have uh two outstanding invoices as if we go back into this screen here I’m going to refresh the all invoices screen now we have two outstanding invoices the one for customer a and one for customer B and I’m going to receive payments for each of these invoices but now I’m going to use this on dep positive funds account because I’m actually going to make one sum deposit for the whole 700 and I want that to match my bank whenever I go reconcile my bank so I’m going to receive the payments uh for these invoices but instead of going into new receive payment I’m going to use a different technique which is I’m going to open the invoice directly and then while I’m looking at the invoice on the screen I’m actually going to click on receive payment so I’m going to click on the actions button and then click on receive payment when I do that the payment screen opens but then one more step happens in your behalf which is it automatically selects the customer for you so you don’t have to go out there and select the customer again and it also automatically applies the invoice for you implying that this is exactly what you’re trying to do because you open the invoice in the first place and then clicked on receive payment so it just saves you a step because contextually that’s what you were trying to do now because I’m going to lump suum this deposit together with a different payment I don’t want to put this deposit in the bank on this screen I want to put it in this account called undeposited funds sometimes that’s called payments to deposit depending on how your QuickBooks file is set up but on depositor funds or payments to deposit should be a current asset account designed to hold your customer payments until you make the deposit we’re going to show you what that workflow looks like so let’s say they paid me with a check and we’ll put here the check number from the customer and then we’ll click on Save and close now I’m going to show you one more different workflow for receiving that payment I’m going to go into sales and click on all invoices and then notice that next to the invoice there’s a button that says receive payment so you can basically click on that and it will take you into the receive payment screen but I’m going to show you one more workflow I’m going to ex out of that going to uh sales and then under customers and let’s say I’m looking at the specific customer in the customer details window and then I’m looking looking at the specific invoice and then from here I can actually click on receive payment with within the options that it gives you notice it gives you tons of options but receive payment is one of the options so we’re going to go ahead and click on that so whichever way you decide to do it it’s going to end end you up at the exact same screen on the received payment screen then I’m going to select check let’s say this customer also pay me with a check and then we also have to make the decision to put this either on the bank account or in the undeposited funds or pay P to deposit account because again we want to choose this option that way we can do one more transaction which is Lum suum those payments together so I’m going to go ahead and click on Save and close and now I have both of those payments received and they’re sitting there in undeposited funds waiting for me to make or record that deposit so the next step to record the deposit is to click on new and then we’re going to go here where it says other we’re going to click on bank deposit once we click on bank deposit it you will notice that QuickBooks actually keeps track of every single payment you have received that you put into this account called on deposited funds essentially what you see here which is this group of transactions that are sitting here under the select the payments included in this deposit these are your undeposited funds and essentially you click on one then the other you see how it adds up to $700 here on the top right and essentially you’re going to say okay I got both of those payments on Monday but I didn’t make it into the bank until maybe Wednesday the 7th that’s the day that both of these Depo payments are going to be deposited into a single deposit and then we select the bank account that we’re going to deposit it into and then we click on Save and close so that’s how you do that workflow where you receive the payments into undeposited funds and deposit them together okay we’re going to talk about a little bit of more advanced technique which is working with credit memos so I’m going to go into the new button and create another invoice I’m going to click on new invoice and then I’ll select my customer we’ll select customer a one more time and then we’ll select any product or service and we’ll put we’ll put an amount here we’ll just put 1,000 now I’m going to backdate this invoice a couple of months ago we’ll put this back in December of 2023 and then we’ll click on Save and close and now there’s a $1,000 invoice outstanding now I’m going to click on sales and invoices and then click on unpaid so we can see the totality of our open invoices notice that this invoice is overdue $1,000 because it’s way past the payment deadline now let’s say that during this process I don’t want to edit or change an invoice from the prior year but I want to recognize that we maybe made a mistake on the job and we’re going to give this customer a $300 credit for example so instead of going back and editing the invoice which is generally not suggested especially when it’s from previous periods what you want to do is you want to recognize a reduction of that account’s receivable a reduction of the money the customer owes you by creating a credit memo so we’re going to click on the new button and then click on credit memo and then we’re going to select the customer that we’re giving the credit memo to click on the drop down menu and click on customer a then we’re going to select which product or service essentially we are refunding them it’s not really a refund because we’re not giving them cash we’re just adjusting their uh their open invoice but it’s technically a refund from a sales perspective because we had a sale in 2023 but now we’re refunding it in 2024 so it’s technically a an income refund but there’s no cash being exchanged we’re just going to receive the balance of the payment when the customer gets to gets to pay us so we’re going to select the product or service that we’re adjusting we’ll put here $300 and we can put uh recognizing our mistake for late delivery or something like that okay now depending on exactly whatever the circumstances are you want to make sure that that memo and that description it’s uh is well understood by any user in QuickBooks so we’ll go ahead and click on Save and close and now the credit memo is um entered automatically now this invoice if I open this invoice it still shows as it having an outstanding $11,000 and the reason for that is because credit memos don’t always automatic Ally apply to the invoice you actually have to take the credit memo and apply to the invoice by using the payments screen so I’m going to go into new and click on receive payment even though I’m actually not receiving a cash payment all I’m doing is I’m going to match that credit memo to that invoice so I’m going to select customer a and then I’m just going to make sure that this credit memo is checked so a quick books starts the process for you notice that you put a check mark on it and as long as you see that credit memo check box they’re being applied to the invoice and then here where it says amount received is nothing because essentially you’re not actually receiving the payment QuickBooks will through this transaction as long as you save it now match that credit memo to the invoice now you could put in the in the memo down here at the bottom you can put applying uh credit memo or something like that you really don’t need to do it it should be pretty self-explanatory but that’s essentially what this does it takes that that credit memo that was was sitting by itself unapplied and applies it to the invoice so then when I click on Save and close now I go back into this screen I can click on refresh and now this invoice should show up as an open balance of 700 uh no longer an open balance of uh 1,000 so I just click on the invoice and notice here that says balance du 700 Now by default in this screen it shows you the original amount of the invoice if I actually click on this little gear button on the right hand site where it says action I can actually click on the little checkbox for balance and I can actually see both the $1,000 that are from the original invoice amount and the actual open balance from the invoice it gives you a little bit better visual so let’s say that now the customer is ready to pay you and they’re going to pay you the $700 so I’m going to click on new receive payment and I’m going to add one more wrench into this whole thing just to give you a new example is I’m going to go ahead and select the customer but this time around my C your customer is paying you in cash but the cash is not even being deposited so I’m going to instead of putting it on deposited funds I’m actually going to put it into something called a petty cash account so I’m going to go into add new and then I’m going to create an account called petty cash click on Save and close and then I’m recognizing that I received $700 in cash to pay off the invoice but the money is not even going into the bank I’m going to put it in the petty cash and I as the invoice is being applied here you have it going into petty cash then you click on Save and close so perfect you have no more invoice open if I refresh on the screen it should show that we have zero amount due for invoices now once it comes time to put the cash from the petty cash account into the bank you can simply just do a transfer so we’re going to go to the new button and then click on transfer and let’s say that you know something happened with that cash it was maybe used for some business purpose purposes and I’ll do an entirely different video about managing petty cash cuz that’s a whole another world but let’s say that the the cash that was in the petty cash account that ended up uh that came from the customer but ended up making it into the bank was maybe $500 and not $200 then you end up doing the transfer here you can put in the memo saying you know uh customer a payment and then put uh $200 where used for gas or something like that but you actually need to go back into that Payday Cash account and record those expenses again that’s an entirely different video entirely different workflow but I think it is important to understand that sometimes you will get payments are in cash now I’m going to show you one more interesting workflow which is when you receive payment with a credit card and then when you deposit money into the bank you actually don’t get the entire invoice amount in the bank the bank actually charges you a transaction fee for being able to use a credit card to receive the money so I’m going to go to the new button and create a new invoice I’ll select one of these customers again pick a product or service I’m going to choose $1,000 one more time and then I’m going to click on Save and close and let’s say now that the money for that in customer payment came into the bank it actually came in for $971 31 right because the bank took a percent as a fee so we’re going to go into new receive payment we’re actually going to receive the payment uh as a whole so we’re not going to record in the receive payment screen the fee and we’re going to select here a credit card let’s say American Express deposit to we are going to send it on deposited funds just like when you get a bunch of checks and deposit them together same thing happens with credit cards where a multiple people pay you with a credit card and essentially the whole amount settles with the fee so we’ll go ahead and click on Save and close so now that payment is sitting in on deposited funds and you can have maybe multiple invoices with payments in undeposited funds and you’re going to do one more step which is going to go into new bank deposit and then we’re going to select the the the the payment but you’re not going to receive $1,000 you’re going to receive 97131 as I mentioned earlier so that difference is a fee so if I take $11,000 minus 97131 I get a amount of 28.6 and that’s the amount that the bank took from you to be able to receive uh a payment through a credit card now that’s going to be a negative amount so that’s a really important piece because once you put that into negative you notice in the top the total is 97131 now the most important thing is to put the account that this belongs to so normally it would be an account called Merchant fees or transaction fees or something like that uh in my particular chart of accounts is called merchant account fees so as long as you have an account called again Merchant fees credit card fees transaction fees stripe fees PayPal fees uh whatever account you create that’s represents that you put that in there now on the receive from you actually don’t need to put anything here if you want to you can put the actual bank’s name the bank that is taking the money away so let’s say this is a stripe or something like that we can actually create stripe uh in there as a vendor I typically like to do that as a vendor not a customer and that way you know okay that’s a fee that we’re paying to stripe so it becomes uh very clear so that’s up to you you actually don’t need to put U the receipt from vendor’s name there I know it’s a little confusing because you’re not really receiving anything they’re actually taking money away which is why is a negative amount so it’s like a negative receiving right it means that they’re taking away but essentially that illustrates it you can have multiple invoice payments in here that are going to be paid in full because the customer from their side they’re paying you 100% essentially the bank is the one that’s taking a fee at the very end which is why you’re receiving a lesser amount at the end so that little piece here that’s really important some people actually will break it up so if you have like three payments they’ll go inad and break up for the first invoice it was this amount for second invoice is this amount for third invoice is this amount if you want to keep that level of detail normally I just add all the fees for that one deposit and put it in there so we’ll click on Save and close and that completes that process now we’re going to shift gears to a slightly different workflow which is when you uh create re invoices and you manage accounts receivable but when you go record the deposits you actually don’t use the new record deposit screen you actually use the bank feed screen so I’m going to go into transactions and go into bank transactions and let’s say for example that you’re going to want to match your uh transactions from whatever you’re seeing in the bank feed screen so for example we see a teller deposit for $5,000 and then we see a stripe deposit for $96.89 so I’m going to recreate the type of transactions that you would basically match into your bank feed so I’m going to start with a couple of uh invoices that add up to the 5,000 so I’m going to go to new go to invoice go to customer a and then quickly create an invoice let’s say for $2,000 and then I’m going to click on uh save and new and I’ll create the other invoice that adds up to $3,000 so let’s go in here and we’ll make this one $33,000 and then we’ll do save and new again so now we have a $5,000 deposit that’s coming in through the bank feed and now we need to match the two invoices that add up to the5 ,000 so I’m going to click on the 5,000 transaction that’s in there and instead of selecting categorize I’m going to click on where it says find match then when I click on find match I’m going to get a list of all my open invoices and all the payments that I have received and then QuickBooks will attempt to try to match the two invoices for you now if QuickBooks doesn’t match them you can manually go and select the combination of invoices that would match that deposit and of course you need to verify with your records if that’s actually the customers are paying you not just because the dollar amounts match you have to make sure it’s the correct one because if you end up telling the wrong customer that they owe you money when they actually did pay you because you confused a different customer’s invoice that had the same dollar amount that’s going to be pretty embarrassing but that it’s a pretty simple workflow you just selected to invoices that match that amount and you click on Save and essentially you didn’t have to click on receive payment and you didn’t have to click on record deposit because the money was already downloaded as a transaction through the bank feed you can simply just match at that payment with outstanding invoices I’m going to do the exact same thing with this 9689 but instead I’m going to create two transactions that add up to $100 and I show you how to record the fee with uh within the bank feed so I’m going to go to new and go to invoice and then let’s say we have an invoice for customer a in this case for $60 and then we’ll do save a new and do an invoice for customer B now for $40 and the addition of those two should add up to 100 so it should be pretty simple and then we can save and close perfect now going back into the bank feed there’s my $96.89 I’m going to click on that I’m not going to click on ADD and I’m not going to click on categorize I’m actually going to click on where it says find match we’ll click on find match we’ll select the two invoices that add up to $100 now you will notice that QuickBooks automatically assumes that one of the invoices is being short paid so you have to be very careful about this particular step here you actually have to click on that amount and put 40 and then once I click tab to recalculate QuickBook is actually telling you there’s a difference for $311 so now you have to do what’s called resolve the difference which means add the fee so we’re going to click on resolve the difference and additional line adds in the bottom we’re going to come down here and put – 3.11 and essentially it gives you now a difference of zero and then under category this is where we’re going to put that merchant account fees account or whatever is called in your chart of accounts we’re going to select that and then the pay in this case is stripe or whatever that’s optional and then we click on save so essentially you want to make sure that the the all the invoices are being marked as 100% paid and then that the difference it’s a negative amount which is your credit card fee that you click on Save and then essentially you finish that workflow completely I’m going to show you one more workflow which is to take your billable time billable expenses and convert them into an invoice so I’m going to click on the gear menu and click on subscriptions and billing because I’m currently in The Simple Start version of QuickBooks Online which doesn’t support this specific feature I actually need to be at least on I need to be at least on Essentials and above to be able to do this piece so I’m going to click on change plans so let’s start by going into the new button and then clicking on single time activity so I’m going to create a time sheet item or enter a time activity that I want to Mark billable to the customer so I’m going to select my employee or my contractor that I’m using their time to then create into into a billable invoice I’m going to select let’s say salary item and then under customer I’ll pick customer B and then under service I’ll put here services and then I’ll put here that they worked let’s say 8 hours and 45 minutes and then on the description I can put a support on their issue or something like that you can also click on start start and end times so if you want to put put the times that they actually worked and then have QuickBooks calculate the hours based on that you can you can do that as well so that’s really up to you and how you want to do it and then on under here where it says billable here you put the rate that you want to invoice your client for so in here it tells you hey that was 2 hours and 15 minutes and based on that you’re going to be able to invoice your customer $918 with. 75 keep in mind that this doesn’t automatically invoice your customer it just keeps it pending for you to be able to invoice them later in the future when it’s time to invoice them so I’m going to click on Save and close and then I’m going to go create an invoice for this customer B so I’m going to go to new invoice I’m going to select customer B from the drop- down menu I notice that immediately on the right hand side there’s a drawer that tells me all of the potential transactions I can add to the invoice based on previous billable time so I’m going to click on ADD and essentially once I click on ADD automatically that billable time translates over to the invoice including the description the quantity and the rate so I don’t have to enter it again so that’s how you take billable time and add it to the invoices now notice that there’s a little uh link button here that says linked to a billable time because if you click on that you can actually see the time entry uh by itself so that’s what that’s for so you can actually inspect the transaction or even edit the transaction by itself so let’s go back into the invoice here and then we’re going to click on Save and close now I’m going to show you a really neat feature that you can only have in QuickBooks Online Essentials or up which is called delayed charges or delayed credits so I’m going to start by clicking on the new button and then I’m going to click on a delayed charge so a delay charge is when you want to sort of remind yourself to invoice that customer maybe at the end of the month for a particular service that you provided but you don’t want to create invoice just yet so let’s say for example back in February 1st for customer a we did some work so I’m going to put here under Services I’m going to put 2 hours for $75 an hour and that happened back in February 1st so I’m going to click on save a new and let’s say the next day on February 2nd we did more work for that customer B and we did uh Services let’s say this time around we did 3 hours and 40 3.45 hours at $75 an hour and then we’re going to click on Save and new and let’s say then on Monday the 5th we did some more work for this customer B and we did let’s say only 75 hours uh times $75 an hour and again the purpose of this is that you’re not creating an invoice each time you’re just entering a record in the system that you want to invoice this customer eventually for all of this work okay then I’m going to click on Save and close then let’s say I realize that I’ve overcharged them an hour for whatever reason I can go into to new and do a delayed credit which would be like the opposite of a charge and then I come back into customer B and let’s say I recognize that on the six and I can put uh uh recognizing we overcharged one hour for whatever reason right so we’re going to put quantity one 75 we don’t need to put a negative or anything like that I mean the but by default uh QuickBooks understands that we uh that we’re doing that then we’re going to go ahead and click on save and close and we’re done so now let’s say it’s the end of the month and we want to invoice our customer for all those charges and even the credits against those charges we’re going to go into the new button that we’re going to click on invoice then we’re going to select our customer customer B and then we’re going to notice on the right hand side that we see both the delayed credits delayed charges and also maybe some additional billable time that we did in another exercise so I can click on the filter button and say you know what only show me delayed charges okay and then I click on apply filter and then I can inspect each of these by clicking on the little link if I want to and I can click on ADD and then add and then basically you add each of the lines from the previously entered delay charges I can ex out this filter and then maybe only show the credits and then click on apply filter and then click on ADD and then in this case we didn’t put a negative on the credit transaction itself but quick books enters this one as a negative because that’s what a delayed credit is so then at the end of the day the math is the customer now also $24 and let’s say this happened right at the end of the month February 29th and then we click on save save and close save and send and then we’re done using our delayed credit and delayed charges now I going show you one more thing which is a billable expense I’m going to click on the gear menu and click on subscriptions and Billings and I’m going to upgrade to now the plus Edition I need to be at least in plus to be able to do this specific part which is the uh billable expenses so with QuickBooks Online plus you’re able to assign an expense to a specific customer so then when we Mark that expense billable uh you’ll be able to create an invoice with that specific line item so for example I’m going to go to new and click on expense and let’s say I went to H FedEx so we’ll put here FedEx I’ll create a new vendor and we Shi some documents for a customer that we weren’t supposed to pay for we did it for them anyway but we’re going to ask them to pay us back so under category I’m going to put here uh shipping or something like that if I have any sort of uh shipping account then on the description we’re going to put here overnighted uh documents as per customer let’s say we paid $27.96 and then here’s the key we’re going to click under the check boox that says billable basically uh reminding us that we have to invoice our customer for that and then most importantly we have to select our customer in here so we’re going to select our customer Mary Smith and essentially we’re going to put uh zero markup now you can actually mark up your billable expenses and make some profit in the process but if you don’t intend to market up or make additional income from that all you really need to know do is leave the mark up at zero then we’re going to click on Save and close and then when we go invoice our customer I’m going to click on the new button and then invoice I’m going to select from the drop- down menu go back to my new customer Mary Smith and then down here in the in the right we’re going to see billable expense we click on ADD and as we scroll down we see that the specific text that we had on the description comes in the amount comes in on the drop down menu you’re going to see that bank and that’s kind of on purpose is because this is actually reversing an expense and there’s no product or Services tied to that so this will be the only situation in which you will see uh nothing selected under products and services because this is in fact a billable expense and then that’s it then you you can maybe add some additional services to this if you want to let’s say I’m going to also charge them $75 for like going to FedEx and shipping the document or whatever um you you can add additional services on top of the billable expenses that you’re getting reimbursed for and then you click on Save and close and that finishes that workflow I’m going show you one more thing which is using a journal entry to adjust like an old accounts receivable sort of just to clean up your old accounts receivable now this is more of an advanced technique and maybe only an accounting professional that understands debits credits and what a journal entry is quite frankly are the ones that should be doing this but I’m goingon to show show you regardless because it is part of account receivable Management in one way shape or form so I’m going to go into reports and I’m going to look for the accounts receivable um aging report I’m going to go into accounts receivable aging and then I’m going to notice that I have maybe an old customer here with a $5,000 balance that’s really really old and I want to just make an adjustment and get rid of that $5,000 balance or maybe I want to get rid of half of it or whatever it happens to be so I want to use a journal entry to adjust that balance so the way that will work is we go in the new button then we click on journal entry and as I mentioned again this is more of an advanced technique I’m going to go in the first account and click accounts receivable and accounts receivable is going to be reduced by $5,000 which will be a credit and again this is more of a something accountants would do and then we can put uh writing off old balance or something like that so we come in here and put our our comment writing off all balance and under name we’re going to put our customer’s name we’re going to find our customer here called Old customer and then generally when you write off the old balance you’re going to go against a sales account and income account or if you have something called returns or refunds or something like that you can also do like a income refunds account or sometimes there will be an account called Bat debt or something like that so that that could also be the account so depends how your account is set up it could be a sales account a refunds account a returns account or or a bad debt account those are typically the accounts that we use to write off all balances so we use a journal entry we use the power of debits and credits and double entry accounting to reduce our accounts receivable and at the same time to uh record the expense or the reduction of income which is to reduce um an open invoice so then we click on Save and close and that essentially writes off the balance notice that now old customer has a net balance of zero but now I need to apply that journal entry into that old invoice simply by clicking on the new button and then clicking on uh receive payment it’s a little bit counterintuitive cuz you really never got paid for that but we’re going to use receive payment then we’re going to select our old customer here and then as long as again our invoice is checked and our journal entry is checked and notice this is like an old invoice from 2022 as long as those two things are checked and at the end the amount received is zero so there’s actually no new money coming into the bank we click on Save and close and that will apply that uh journal entry to adjust your account receivable make the open invoice disappear and you essentially will be done with that the very last thing I’ll show you is uh how to create a customer statement that shows you the history of all the invoices and payments you ever had for that specific customer so I’m going to click on the new button then I’m going to go into statement it’s under other so interesting enough it’s not under customer is under other I’m going to go to statement and then I’m going to select which customer I want to see uh sort of a history of statement for so I’m going to select which is the one that I want to uh select then I’m going to click on print or preview that way I get to see the history and then QuickBooks will show me all of the transactions that are open that essentially add up to the $918 so you get to see all the positives and all the negatives that carry over a balance to eventually show you what the ending balance for that customer is if I excit that and I go from instead of clicking on balance forward I click on transaction statement and then click on apply and then I’m going to just select customer B and click on print preview you’re going to see that the statement looks slightly different so depending on what type of statement you want to see you’re going to have a transaction statement statement you’re going to have an open item statement or you’re going to have a balance forward statement and you want to play with each one of these to see which is the one that makes the most sense to you and the one that your customer will understand probably the best you want to uh go through and try all the different type of statements that you have before you make a decision in terms of what’s the actual statement that you want to send to your clients so anyway I hope you enjoy this video on the accounts receivable workflow and how to record income using these workflows make sure you check the description below there’s tons of other videos that talk about other things accounts payable workflow deeper into bank feeds deeper into reports and how to record income without accounts receivable there’s a separate video that explains that in there which skips invoices skips payments it just goes straight into deposits or Bank feeds anyway I hope you enjoyed it and I see you in the next one

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • Microsoft 365: SharePoint Online Fundamentals

    Microsoft 365: SharePoint Online Fundamentals

    These resources offer a comprehensive introduction to Microsoft SharePoint Online and its integration within the Microsoft 365 ecosystem. They guide users through accessing SharePoint, understanding different site types like team and communication sites, and navigating their features. The materials also explain how to manage and customize SharePoint sites, including navigation, appearance, and the application of site templates. Furthermore, they cover collaboration tools such as Microsoft 365 Groups, file management with OneDrive for Business, and methods for discovering and managing content and user profiles within the platform. Finally, the resources touch upon site administration, including site creation, deletion, and restoration.

    Microsoft SharePoint Online Study Guide

    Quiz

    1. Explain the primary purpose of Microsoft SharePoint Online in 2-3 sentences.
    2. Describe two different roles a user might have when interacting with a SharePoint Online site.
    3. What is Microsoft 365 (formerly Office 365), and how does it relate to accessing SharePoint Online?
    4. Outline the steps a user would typically take to access their SharePoint Online account.
    5. Identify and briefly describe the function of the “app launcher” in the Microsoft 365 environment.
    6. Explain the difference between the online/web-based versions of Microsoft applications and their desktop counterparts within the context of a Microsoft 365 subscription.
    7. Describe the search functionality within the Microsoft 365 home page and highlight one of its key features.
    8. What is a Microsoft 365 group, and what are two benefits it provides for collaboration?
    9. Briefly explain the purpose of OneDrive for Business and how it can be accessed.
    10. What is the SharePoint start page, and what are two things a user can do from this page?

    Quiz Answer Key

    1. Microsoft SharePoint Online is a web-based platform and cloud service designed to help organizations manage and share content and knowledge effectively. It empowers teamwork by facilitating quick information retrieval and creating seamless collaboration through the web.
    2. A typical user in a SharePoint site might primarily view and interact with content, such as reading documents or viewing web pages. A site owner, on the other hand, has administrative responsibilities, including managing site content, permissions, and overall structure.
    3. Microsoft 365 is a subscription-based service that includes web-based versions of Microsoft Office applications and other online services, including SharePoint Online. It serves as a common gateway through which users can access various Microsoft cloud platforms, including SharePoint.
    4. To access SharePoint Online, a user typically starts by going to office.com or microsoft365.com in a web browser and signing in with their organizational email address and password. Once logged in to the Microsoft 365 home page, they can then locate and click on the SharePoint icon (often a stylized “S”) in the app launcher or navigation pane.
    5. The app launcher, often symbolized by nine dots or a “waffle” icon in the top left corner of the Microsoft 365 interface, is a menu that provides quick access to all the Microsoft 365 applications available to the user, including Outlook, OneDrive, Word, Excel, PowerPoint, Teams, and SharePoint.
    6. Online or web-based versions of Microsoft applications are accessed through a web browser and are part of the Microsoft 365 subscription, allowing users to work from any device with internet access. Desktop applications, in contrast, are installed directly onto a computer’s hard drive and typically require the user to be on that specific machine to access the software.
    7. The search functionality within the Microsoft 365 home page offers a powerful way to find content across various applications and services, including file contents, site names, people, news, and conversations. A key feature is its ability to search not only file titles but also the content within the files and even text within images.
    8. A Microsoft 365 group is a service that connects different Microsoft 365 tools, allowing a defined set of people to collaborate effectively. Two benefits include a shared inbox and calendar for streamlined communication and scheduling, as well as a shared document library for centralized file storage and collaboration.
    9. OneDrive for Business is a personal cloud storage space associated with a user’s work or school Microsoft 365 account, allowing them to store, protect, and share their files. It can be accessed by clicking the blue cloud icon labeled “OneDrive” on the Microsoft 365 home page or through the app launcher.
    10. The SharePoint start page is the initial screen users see when they access SharePoint Online. From this page, users can view news and updates from across their organization, see and navigate to SharePoint sites they frequently visit or follow, and use a global search to find content, sites, and people within their Microsoft 365 environment.

    Essay Format Questions

    1. Discuss the key differences between a SharePoint Online team site and a communication site, highlighting their respective purposes and typical use cases within an organization.
    2. Explain the strategic considerations involved in planning the structure and navigation of a new SharePoint Online site, emphasizing the importance of user experience and site maintainability.
    3. Describe the evolution of site organization in SharePoint Online, contrasting the use of subsites with the modern approach utilizing team sites, communication sites, and hub sites. Analyze the benefits and drawbacks of each method.
    4. Outline the various ways a site owner can customize the look and feel of a SharePoint Online site, including the use of themes, headers, and navigation settings, and discuss the impact of branding on user engagement and site recognition.
    5. Discuss the administrative responsibilities associated with managing SharePoint Online sites, including site creation, deletion, restoration, and the importance of understanding user permissions and site governance policies.

    Glossary of Key Terms

    • App Launcher: A menu (often a nine-dot grid or “waffle” icon) in the Microsoft 365 interface that provides access to all available Microsoft 365 applications and services.
    • Cloud-based Service: A service, such as software or data storage, that is hosted on remote servers and accessed over the internet, rather than being installed or stored locally on a user’s device.
    • Communication Site: A type of SharePoint site designed primarily for broadcasting information, news, and updates to a large audience in a visually appealing format.
    • Document Library: A specific type of list in SharePoint used for storing, organizing, and managing files and documents. It offers features like version control and metadata.
    • Microsoft 365 (formerly Office 365): A subscription service offered by Microsoft that includes a suite of web-based applications (like Word, Excel, PowerPoint, Outlook) and cloud services such as SharePoint Online and OneDrive.
    • Microsoft 365 Group: A service within Microsoft 365 that allows a group of people to collaborate more effectively by sharing resources like a common inbox, calendar, and SharePoint site.
    • OneDrive for Business: A personal cloud storage service associated with a user’s work or school Microsoft 365 account, used for storing, syncing, and sharing files.
    • SharePoint Online: A cloud-based platform and service from Microsoft that enables organizations to share and manage content, collaborate on projects, and build internal websites and portals.
    • SharePoint Start Page: The initial landing page in SharePoint Online that provides users with access to news, frequently visited sites, followed sites, and a search bar for finding content.
    • Site Owner: A user with administrative permissions over a specific SharePoint site, responsible for managing its content, settings, user access, and overall structure.
    • Team Site: A type of SharePoint site designed for collaboration among a team of people, providing a shared space for files, communication, and project management tools.
    • Tenant: A dedicated instance of the Microsoft 365 service provisioned for an organization. It includes all the organization’s users, data, and configurations within the Microsoft cloud.
    • URL (Uniform Resource Locator): The web address of a resource on the internet, such as a SharePoint site or page. Understanding the components of a SharePoint URL can provide insights into the site’s structure.

    Briefing Document: Microsoft SharePoint Online Fundamentals

    Date: October 26, 2023 Prepared For: Individuals seeking to understand and utilize Microsoft SharePoint Online. Sources: Excerpts from “Pasted Text” (a transcript of a Microsoft SharePoint Online introductory course).

    Executive Summary

    This document summarizes the key themes and concepts introduced in the initial modules of a Microsoft SharePoint Online course. The course aims to equip new users and prospective site owners with the foundational knowledge to manage and share content, create engaging web pages, and understand the roles and potential of the SharePoint Online platform within the Microsoft 365 ecosystem. The primary focus is on accessing SharePoint Online through Microsoft 365, navigating its environment, understanding different site types (Team and Communication), and basic site management principles.

    Main Themes and Important Ideas/Facts

    1. Introduction to SharePoint Online

    • Definition: SharePoint Online is a web-based, cloud-based platform from Microsoft designed to help organizations share and manage content and knowledge, empower teamwork, facilitate information discovery, and enable seamless collaboration.
    • Quote: “SharePoint online is a cloud-based service some organizations use it in conjunction with Microsoft 365 and some of them use it as a standalone web-based application or platform but the great thing about SharePoint online is that it really helps organizations to share and manage content and knowledge by empowering teamwork quickly helping them to find information and creating seamless collaboration through the web.”
    • Target Audience: The course is designed for individuals new to SharePoint and those looking to create and manage their own SharePoint sites or become new site owners.
    • Quote: “This class is designed for someone who is new to SharePoint in this course we’re going to explore how to access SharePoint online through office 365.”
    • Potential: SharePoint Online offers significant potential for both site owners and end users in managing and sharing content and creating engaging web pages.
    • Quote: “You’ll be amazed at the great potential that SharePoint online has for both the site owner and the end user.”

    2. Accessing SharePoint Online through Microsoft 365

    • The Gateway: SharePoint Online is primarily accessed through Microsoft Office 365 (now Microsoft 365), a subscription-based suite of web-based services.
    • Quote: “The first thing we need to do to access SharePoint online is actually go into another Microsoft platform called Microsoft Office 365 or Microsoft 365.”
    • Login Process: Users can access Microsoft 365 by navigating to office.com in a web browser (e.g., Microsoft Edge, Google Chrome) and signing in with their organizational email address and password.
    • Quote: “To do that we’re going to be logging into the office.com site… right here I need to click on sign in and then of course I’m going to paste in my email address… and then I’m going to click on next I’ll need to provide my organizational email address because I will be logging into a work Office 365 account.”
    • Homepage Overview: The Microsoft 365 homepage provides access to various online applications and recently accessed files. Key elements include the app launcher (waffle/Rubik’s Cube icon), organization name, and the online versions of Office applications.
    • Quote: “Number one top left hand corner I have the app launcher next to it I might see my organization’s name and then that I’m in office but this is the online version of office so again this will be our jumping point to get into SharePoint online.”
    • Cloud-Based Nature: Microsoft 365 and SharePoint Online are cloud-based applications, requiring only a computer, web browser, and internet connection to access.
    • Quote: “When we’re talking about Microsoft 365 we’re talking about web-based applications these are cloud-based applications meaning that all you need for them to run is actually your computer a web browser and the internet.”

    3. Navigating the Microsoft 365 Environment

    • App Launcher: The app launcher provides access to all available Microsoft 365 applications, including SharePoint. Users can pin frequently used apps to the launcher for easier access.
    • Quote: “This is called the app launcher sometimes people give it other names like the Rubik’s Cube or the waffle but the correct term is app launcher and from anywhere where you are in Microsoft 365 this allows you to see a list of all your M365 applications.”
    • Creating New Content: From the Microsoft 365 homepage, users can create new online versions of Word documents, Excel workbooks, and PowerPoint presentations directly in their web browser. These are automatically saved to OneDrive for Business.
    • Quote: “Over on the left hand side in my navigation pane I have the ability to create new content using Microsoft 365. when I click on this create button you’re going to see that it gives me options to create new Word documents PowerPoint presentations even Excel files using the online versions of the Microsoft applications.”
    • Search Functionality: Microsoft 365 offers a powerful search capability that searches through file titles, content, SharePoint sites, people, news, conversations (Outlook, Teams), and even text within images.
    • Quote: “When you do a search on your Microsoft Office 365 home page it’s not only going to be searching through the titles of files it searches through their contents.”
    • Customization: Users can customize their Microsoft 365 environment by changing the theme, switching to dark mode, and pinning/unpinning apps from the app launcher. These settings can be accessed via the settings gear icon.
    • Quote: “If I go to the top right hand corner of my Microsoft 365 home page you’re going to see a little white gear this is something that you will see throughout Office 365 web-based applications this represents the way to basically get into your defaults for your Microsoft 365 account.”

    4. Understanding Microsoft 365 Groups

    • Definition: Microsoft 365 Groups are a service within Microsoft 365 that connect different collaboration tools. They allow a group of people to share documents, create spreadsheets, work on project plans, schedule meetings, and send emails to the group.
    • Quote: “Microsoft 365 group now groups are a service that work inside Microsoft 365. they help you really to connect different tools that you need to collaborate with a Microsoft 365 group you can take a group of people and actually write documents create spreadsheets work on project plans even schedule meetings or send email to that group of people.”
    • Accessing Groups: Groups can be accessed primarily through Microsoft Outlook (online and desktop). In Outlook online, groups are found at the bottom of the folder pane. In Outlook desktop, they are listed in the folder pane as well.
    • Quote (Outlook Online): “Inside of Outlook online to access my groups I’m going to come over to my folder pane… then to access your groups you’re going to want to scroll all the way down to the bottom you’ll see that groups are also something that can be expanded and collapsed so make sure that you have them open so that you can see them.”
    • Quote (Outlook Desktop): “Inside Outlook desktop and I want to access my groups notice over here that I have my folder task pane open and if I come down towards the bottom I’m going to see the groups that I’m part of inside my organization.”
    • Collaboration Tools within Groups: Each Microsoft 365 Group comes with a shared inbox, shared files (stored in a SharePoint document library), a shared calendar, a shared OneNote notebook, and often an associated Planner for task management and a SharePoint Team Site.
    • Quote (Shared Files): “To access that area and come directly to this little piece of paper button this is actually way to go to the shared files that this group has in common when I click on it it takes me to what’s called a document Library this is actually part of a SharePoint site but we’re able to access it here from inside the Outlook web application.”
    • Quote (Shared Calendar): “I’m going to come up now again and click on the shared calendar button this takes me into another browser tab for the calendar web application and it’s going to take me specifically to the group calendar that’s been set up.”
    • Quote (Planner): “Planner is a task application that’s part of your Microsoft 365 platform and when you click on planner it opens up the Microsoft planner application inside of a browser tab… for viewing tasks inside of what are called buckets.”
    • Quote (SharePoint Site): “When I click on site I’m going to see another browser tab open this is taking me to a SharePoint site it’s actually what we call a team site it’s a site that’s been created to allow my Microsoft group to have a place to collaborate within a website.”
    • Creating and Managing Groups: Users can create new Microsoft 365 Groups through Outlook (online). When creating a group, users can define the name, description, privacy settings (public or private), and whether members receive notifications. Owners can manage group membership.
    • Quote (Creating): “To make a new group of my own I’m going to select new group this is going to take me into where I can give my new group a name as I do this it’s going to create an email account for my group I can update this by just changing this name up here I’m also going to include a description this would help other people if they were discovering my group to know what my group is about.”
    • Quote (Managing): “For this I have a manage groups option when I click here it’s going to take me and show me the different groups that I’m currently part of in fact it refreshes and opens up the People application because this is where my group membership is managed from.”

    5. Understanding Delve (Microsoft 365 Profile)

    • Purpose: Delve is an application within Microsoft 365 that helps users discover and organize information based on their activity and connections within the organization. It tracks files worked on and people collaborated with.
    • Quote: “With your profile Microsoft keeps track of where you go files that you work on even people that you work with inside your organization now this might sound scary but it’s not they use an application called Dell to help you manage this information and it’s really made to help you discover and organize the info.”
    • Permissions: Delve respects existing permissions, so users will only see documents they already have access to. Private documents remain private.
    • Quote: “Delve is never going to change any permissions you’ll only see documents that you already have access to and other people will never see your private documents.”
    • Accessing Delve: Delve can be accessed from the user’s profile picture or initials on the Microsoft 365 homepage or by searching for “Delve” in the search bar or app launcher.
    • Quote: “From my home page I’m going to come to the top right hand corner to my picture or initials and click and down here I’ll see a hyperlink that will give me access to my office profile when I click on this it’s going to take me to an application called Dell.”
    • Features: Delve displays recent documents, people users work with, and a home screen showing recent documents their colleagues are working on. Users can favorite documents and navigate to colleagues’ profile pages.
    • Quote (Home Screen): “When I go to my home screen I’m going to see recent documents that co-workers have worked on they’re going to appear on little cards that are called content cards and the idea is that it tells me the type of file when it was last updated and also where it’s stored.”
    • Safety and Privacy: Delve does not store files; it’s a tool to access them. It does not change permissions, and only users can see their private documents within Delve.
    • Quote: “Yes your documents are safe inside of delve delve will never change permissions for your documents and only you can see your private documents in delve and also your files aren’t actually stored in Dell delve is just the tool to help you access the files.”

    6. Understanding OneDrive for Business

    • Definition: OneDrive for Business is cloud storage within a user’s Microsoft 365 account for storing, protecting, and sharing work or school files. It can be accessed from any device.
    • Quote: “OneDrive for business it’s also sometimes called OneDrive for work or school so what is OneDrive OneDrive is really the cloud storage that is part of your Office 365 account just for you it lets you store and protect your files and share them with others and get them from any device.”
    • Storage Space: Users typically get over one terabyte of storage space.
    • Quote: “With Microsoft 365 you can get over one terabyte of space for storing your files.”
    • Accessing OneDrive: OneDrive for Business can be accessed from the Microsoft 365 homepage via the app launcher or by searching for it.
    • Quote: “I can also come over to my app launcher and I’ll see OneDrive there as well.”
    • Interface: The OneDrive for Business interface includes a command bar at the top and a navigation pane on the left, with views for “My files,” “Recent,” “Shared,” and the “Recycle bin.”
    • Quote: “A few common interface settings is that you’ll see a command bar at the top also on the left you’re going to see a navigation pane the default view in OneDrive for business is called my files this is exactly what we’re seeing here.”
    • File Management: Users can create new folders and files, drag and drop files into folders, and upload files and folders from their local computer or network drive.
    • Quote (Creating Folders): “Up in the command bar I’m going to see options to help me manage content one of them is that I can create new folders and files using office 365. I’m going to create a new folder I can name it and then I can take my files and store them inside the folder.”
    • Quote (Uploading): “For this I’m going to use my upload button with my upload button I can upload files and folders.”
    • Synchronization: OneDrive files can be synchronized with a user’s local computer using the OneDrive sync client, allowing access through File Explorer. Changes made locally are automatically synced to the cloud.
    • Quote: “The other thing that some people will do is synchronize their OneDrive files synchronizing can be important if you don’t want to have to come to this site to be able to access your OneDrive files it actually allows you after we’ve synchronized to access your files from your file explorer.”
    • Sharing Files: Users can share files with colleagues by generating a link (internal or sometimes external to the organization) and granting either view-only or editing permissions. Shared files are indicated in the OneDrive view.
    • Quote: “Up in the command bar you’ll see a share button also if you come to the ellipses next to the file’s name you’ll have another option to share now remember sharing is not like emailing a file that’s attached through email because when we email file attachments it recreates a copy of the file… when I share a file through OneDrive I’m giving my co-worker or the person I’m sharing the file with a link to the file it’s not creating copies of it.”

    7. Introduction to SharePoint Online Sites

    • Accessing SharePoint: Users can access SharePoint Online from the Microsoft 365 homepage via the app launcher or by searching for “SharePoint.” This leads to the SharePoint start page.
    • Quote: “From my Microsoft 365 home page I’m going to come up to the search bar and type in SharePoint… as I come to SharePoint we’re going to see that I’m still in Office 365 so I can see the app launcher… and also that I’m now inside of SharePoint.”
    • SharePoint Start Page: This page displays content cards for news updates and SharePoint sites the user has permission to access. Users can favorite sites to follow them.
    • Quote: “This area that I’m in right now is called the SharePoint start page instead of seeing a specific SharePoint site what I’m seeing are content cards that allow me to see different news updates or sites that are part of my organization it’s a great way to explore what kinds of sites your organization has.”
    • Searching within SharePoint: The search bar on the SharePoint start page allows for a global search across SharePoint, OneDrive, and other Microsoft 365 content, with pre-filtered results for files, sites, people, news, images, and Power BI reports.
    • Quote: “If I come up here and do a search and it can be for people it can be for Content it can be for anything it’s a very very Global search because not only am I searching through SharePoint I’m searching through my OneDrive I’m searching through anything that’s stored within my Microsoft 365 account.”
    • Navigating a SharePoint Site: Once on a SharePoint site (e.g., a Team Site), users will see common elements like the site title, navigation (often on the left or top), search bar (scoped to the site by default), and user login information.
    • Quote: “I’m now on a SharePoint site this is what we call a SharePoint team site now a couple of common features that you’ll see in a SharePoint site we’re still inside of Office 365 so I see the app launcher also notice right now the search bar tells me that if I do a search it will default to just search the site that I’m in.”
    • Common Site Content: SharePoint sites often contain document libraries (for storing files) and SharePoint lists (for tracking tabular data like product lists or contacts).
    • Quote (Document Library): “I’d like to do is take you to a really common piece of content called a document Library when I click on documents it’s going to take me to a list of folders and files that this department has stored inside their SharePoint site.”
    • Quote (SharePoint List): “For this I’m going to come over to my site navigation and go to product list this is an example of a SharePoint list with products here I’m going to see information that would normally be stored in a spreadsheet but here it’s just right inside of my SharePoint site.”

    8. Types of SharePoint Sites: Communication Sites

    • Purpose: Communication sites are designed to share news, reports, status updates, and other information visually with a broad audience. They are primarily for broadcasting information.
    • Quote: “What exactly is a communication site in Microsoft 365 a communication site is a way to share news reports and status and other information in a visually compelling way a Communications site is really made to broadcast information to a broad audience.”
    • Membership: Typically have a small number of content contributors and a much larger audience of information consumers.
    • Quote: “Usually a communication site only has a small set of members that contribute content but then that content is consumed by a much larger audience.”
    • Microsoft 365 Group Association: Do not automatically create a Microsoft 365 Group.
    • Quote: “When you create a communication site a Microsoft 365 group is not created.”
    • Common Features: Often include news releases, links to resources, calendars of events, and sometimes integration with platforms like Yammer for leadership communication.

    9. Types of SharePoint Sites: Team Sites

    • Purpose: Team sites are designed to connect teams, allowing them to share resources, collaborate on files, and create and manage lists of information. They are focused on collaboration.
    • Quote: “Team sites allow you to connect you and your team together to share resources and content team sites are a great place to store and collaborate on files and even create and manage lists of information.”
    • Membership: Team sites have a defined set of members (team owners and members) who typically have permissions to edit content at different levels.
    • Quote: “If you go to the top right hand corner you’re going to see a list of team members when you click on this list you’re going to see that some of them are team owners and some of them are members but both a team owner and a team member have permission to edit content on this site at different levels.”
    • Microsoft 365 Group Association: Often associated with a Microsoft 365 Group, which helps manage membership and provides additional tools like a team calendar, shared OneNote notebook, and Planner.
    • Quote (Team Calendar): “Often team sites are going to be regulated by an Office 365 group that is helping to manage the membership of your team this calendar will take me to exchange online and let me see a calendar that’s been created for my Mark 8 project team.”
    • Quote (OneNote Notebook): “When a team site is created for a group of people an empty OneNote notebook is created that can be accessed from the team site.”
    • Quote (Planner): “These planners are created again when the site is created this particular one when we open it up will open in planner this is of course a task management application that’s part of The Office 365 experience.”
    • Common Features: Include left-hand navigation, recycle bin, document library, team calendar, OneNote notebook, and Planner app.

    10. Planning and Creating SharePoint Sites

    • Importance of Planning: Before creating a site, it’s crucial to plan the site’s organization, including navigation, lists, libraries, and pages, to ensure ease of maintenance and user productivity.
    • Quote: “When a site’s content is logically organized and easy to find it’s going to be easier to maintain and manage it also helps your site users to be more productive so as a site owner you need to plan out your site and there needs to be some strategy involved before you get started.”
    • Site Collections: SharePoint sites and their associated content (pages, libraries, apps) form a site collection.
    • Quote: “With SharePoint online you will have what’s called a site collection which means the different pages that make up your site the document libraries the different applications all come together in a collection that is your SharePoint site.”
    • Permissions to Create: Typically, only users with specific permissions granted by a SharePoint or M365 administrator can create new SharePoint sites.
    • Quote: “Keep in mind that to create a SharePoint site you have to have permission to do so in a lot of organizations normal users cannot create SharePoint sites and there is a request process that you need to go through and your site will be created for you a SharePoint admin or an M365 Global admin can give you the ability to create sites through permissioning.”
    • Creating a Team Site: From the SharePoint start page, users with permission can click “Create site” and choose “Team site.” They need to provide a site name (which also creates an Office 365 Group and calendar), a site description, privacy settings (private or public), and add members and owners. The site URL is created based on the site name and is not easily changed later.
    • Quote: “I’m going to click on create site on the right hand side a panel opens up asking me the type of site I want to create… we’re going to do a team site now I need to name my site after my site’s named I’m also going to see that underneath it’s creating an Office 365 group and also a calendar… this group and calendar are important because they’re going to help me manage calendar events and also communicate with the different users of my site using email the other thing that’s really critical here that’s created is your site URL this is something that cannot be changed very easily after the site is created your site name can always be updated later on.”
    • Adding Members and Owners: When creating a team site, users can add colleagues as site members (with editing permissions) or site owners (with more administrative control). The site creator is automatically a site owner.
    • Quote: “At this point I need to start typing in the names of my co-workers who will be able to access this site as I type these co-workers names in they’re actually populating from my company address list or my active directory this makes it really easy for me to go in and quickly start creating the members of my site these are again the people who will be able to access and edit content on my site… I can actually at this point before I’m even done creating the site allocate either my different site members to be owners or site members… because Megan’s creating the site she will also automatically be assigned the role of a site owner.”

    11. Managing the Look and Feel of SharePoint Sites

    • Site Templates: After site creation (and accessible via Site Settings), users can apply pre-designed site templates provided by Microsoft or their organization to quickly add content and structure based on common scenarios (e.g., event planning, project management). Templates update the site’s content, color, and add web parts.
    • Quote: “Here in my training opportunities team site that I just created I’d like to go ahead and apply one of the site templates to this site to do that I’m going to go to my site settings site settings are located in the top right hand corner of SharePoint online directly from your SharePoint site… about fourth from the bottom in the top menu I’ll see apply a site template when I click on this it will open up the site templates.”
    • Site Settings: A central place to manage various aspects of a SharePoint site, accessed via the gear icon in the top right corner.
    • Quote: “To do that I’m going to go to my site settings site settings are located in the top right hand corner of SharePoint online directly from your SharePoint site so they’re really easy to get to so I’m going to come up and click on this white gear located in the top right hand corner of my screen.”
    • Subsites (Discouraged in Modern SharePoint): While it’s still possible to create subsites (sites within a site), modern SharePoint in Microsoft 365 recommends a flat site architecture using team sites, communication sites, and hub sites for better manageability and migration. Subsites can be created via Site Contents.
    • Quote: “However with modern SharePoint in M365 we really want to steer clear of subsites one of the reasons is that if you already have subsites and you’re migrating to SharePoint online and M365 it makes the migration process a lot more difficult what SharePoint online recommends instead is that you try to keep the architecture of your site flat instead of using subsites we want you to utilize team sites communication sites and what’s called a hub site to help keep the structure of your SharePoint site very flat.”
    • SharePoint Online URLs: The anatomy of a SharePoint Online URL provides information about the protocol (HTTPS), tenant name, SharePoint platform (sharepoint.com), site location (/sites/ or /teams/), and the specific site and content (e.g., document library – /Shared Documents/, list – /Lists/).
    • Quote: “If we come up here in this site I’m in the sales and marketing team site of this organization I’m in a Microsoft environment so the URL is a little bit weird but we can still refer to it to help us understand the anatomy of a SharePoint site the first thing you’re going to notice is that it’s an https site this lets us know that it’s a modern site… the next thing I’m going to see is the company name… and also this is the URL of your tenant now the next thing I’m going to see is I go over to the right it’s going to tell me that I’m in and SharePoint you’ll see that it says sharepointon.com this lets me know that I’m using SharePoint online… the next thing I’m going to see is that I’m in a site this means that I’m in one of the sites that is part of this company’s collection of SharePoint sites then I finally see my site name.”
    • Modern vs. Classic SharePoint: Microsoft introduced the modern SharePoint Online experience in 2016, designed to be more compelling, flexible, and mobile-friendly compared to the classic experience. The classic experience has some functionalities not available in modern SharePoint.
    • Quote: “In 2016 Microsoft introduced the modern SharePoint online experience previous to this time a lot of companies were using what they call SharePoint online classic now the modern experience was designed to be more compelling flexible and even available on mobile devices easier to use it was available in SharePoint online and also SharePoint server 2019 with some limitations but there are still organizations that are using the classic experience.”

    12. Hub Sites

    • Purpose: Hub sites connect different SharePoint sites with common navigation and branding, making it easier for users to navigate between related sites. They help create a flat site architecture.
    • Quote: “Hub sites which is a way to connect certain sites with common navigation and branding to make it really easy for users to navigate between them but now what we want to do is look at how you can manage Hub sites on your own especially if you’re a site owner.”
    • Creation and Association: Hub sites need to be created by a SharePoint administrator or a global admin. Site owners with permission can associate their sites with an existing hub site via Site Information in Site Settings.
    • Quote: “A hub site needs to be created for you buy one of your SharePoint admins or a global m a global admin in M365 so keep that in mind if you need a hub site and you want to assign some sites to it you’ll probably need to ask your SharePoint admin to enable The Hub site for you… From my Us sales site I’m going to come in and go to my site settings gear… then I’m going to come down to site information now this is going to take me in and let me see things like the title of my site also the privacy settings and more importantly what we’re looking for is Hub site Association right now it says None So to allow me to associate this with a hub site I’d have to have permission to do so which I do and I need to know know the name of the Hub site for me it’s Global sales I’m going to select that and then I’m going to click on Save.”
    • Hub Site Navigation: Site owners of the hub site can edit the global navigation bar that appears at the top of all associated sites to include links to relevant sites within the hub. This is done via an “Edit” button on the hub site’s navigation.
    • Quote: “From here if I am a site owner of this Hub site I will see that on the navigation bar I have an edit button on the far right hand side of the site navigation and keep in mind this is not just within this site this is connecting these sites together I’m going to edit this now you’ll see what’s interesting is that the editing is not horizontal it turns it vertically but once I’m done editing then it will be horizontal now I want to add that site to the site navigation so I’m going to come to the bottom of the current edit Hub navigation and I’ll see this little plus sign in a circle this is of course where I can add new content to the navigation bar at the top I need to type or choose what it is that I’m adding I’m going to be adding a link and then in the address bar I’m going to paste in the address of my US Cell Site.”
    • Branding Consistency: Sites associated with a hub site typically inherit the hub site’s theme and branding.

    13. Updating Site Navigation and Appearance

    • Site Navigation Options: Site owners can modify the site navigation (left-hand or horizontal) via “Change the look” in Site Settings. They can turn it off, switch between vertical and horizontal orientation, and edit the links (reorder, rename, remove, add new).
    • Quote (Turning Off/Changing Orientation): “I’m going to go to the top right hand corner to the white gear and Microsoft has done a great job at putting some of these overall site navigation and look tools right here in this menu if you come down to the bottom we have an option that says change the look now this will give me three different primary areas that I can update in my site we want to start with the bottom one which is navigation how are people accessing content on my site now first of all I can turn my site navigation off completely… I’m going to turn the navigation back on but I’m going to change the orientation to being horizontal.”
    • Quote (Editing Links): “We’re going to come to the bottom of the navigation bar this is really easy to find there’s an edit button this will unlock the site navigation so that I can make changes to it notice how each item has an ellipses on the right hand side hopefully you know what these are for right when you click on them it gives you additional options to manage that specific item for me the first thing I want to do is remove the OneNote that’s associated with this site… also you’ll see here that I can click on the ellipses and use it to move items up in the site navigation… I want to go to the documents area and I’d like to edit that content first of all we’re seeing that it’s a link in the site navigation and we’re seeing the URL to the site I just want to update the name rather than saying documents I’m going to update it to be team files.”
    • Themes: Site owners can change the overall color scheme of their site by selecting a theme under “Change the look” in Site Settings. Organizations may have custom branded themes available.
    • Quote: “For that I need to go again to my site settings so from the site I’m going to come up to the white gear in the top right hand corner click on it and come down to change the look under change the look this time we’re going to head to the top to theme think of PowerPoints when you do this these are the different themes or color palettes that you can apply inside of a SharePoint site and as you click on them you can actually preview them.”
    • Site Header: The header at the top of a SharePoint site (below the Microsoft 365 taskbar) can be customized in terms of layout (minimal, compact, standard, extended), background color (based on the theme), and site logo. This is done under the “Header” option in “Change the look.”
    • Quote: “For that I need to go again to my site settings so from the site I’m going to come up to the white gear in the top right hand corner click on it and come down to change the look this time we’re going to head into the header portion now in the header there are four different layouts minimal which is very thin compact which is a little bit taller standard and finally extended… under the layouts I’ve got based on the theme that I’ve picked for my site the ability to customize the color applied at the top… below that you can actually turn your site title off maybe you only want to see the theme and notice this just takes the title off now speaking of title on every SharePoint page you’ll see that next to the title there is a logo… as I come down it’s going to ask me for two different logos one is a thumbnail and one is a site logo… I’m going to click on change I have already downloaded my logo locally to my computer… and we’ll see it get added now final thing I can do here is click on Save.”
    • Updating Site Logo (Alternative Method): The site logo can also be updated via “Site information” in Site Settings.
    • Quote: “I’m gonna head back to the settings gear again… from here what I want to do is come down to site information now site information is where you can do things like associate Hub sites also customize your site description and update the title of your site… in this case at the very top you’re going to see a location where you can update and change your site logo so I’m going to click on change navigate to the folder where my updated logo is located and then I’ll click on Save.”

    14. Deleting and Restoring SharePoint Sites

    • Deleting a Site: Site owners can delete a SharePoint site via “Site information” in Site Settings. It’s crucial to understand that this action deletes all site content, including files, lists, and associated Office 365 Groups. A confirmation prompt and warning are displayed before deletion.
    • Quote: “To do that I need to be a site owner also I’ve already done this I’m going to click on my site settings gear now before you delete a site do you have permission to delete it and what’s going to happen to all the stuff in that site… what I’m going to do from here is come up to my site settings gear and go down to site information this is where we’re going to see things like the name of the site it’s description also it’s privacy settings but notice at the bottom above the save button I have a delete site option before you delete a site Microsoft SharePoint online is always going to remind you about what you’re doing notice it’s telling me this will delete all the resources including the site the files the conversations do you want that to happen it’s asking me to back that content up now in this organization there actually is a backup that’s going on behind the scenes but you don’t know that’s going to happen for sure in your organization so please be sure before you delete anything you make triple sure that stuff is backed up yes I’m going to delete all the associated resources and the group… I’m going to click on delete and suddenly I don’t see the side anymore it takes me back to my SharePoint start page.”
    • Restoring a Deleted Site (Admin Function): SharePoint administrators or global Office 365 admins can restore a deleted SharePoint site from the SharePoint admin center within a retention period (typically 93 days). Restoring the site also restores any associated Office 365 Group and its content.
    • Quote: “However if you’re a SharePoint admin or a global Office 365 admin you can help there is something there that can help restore a deleted SharePoint site the first thing we need to do is get into the admin portal for Office 365… over here on the left hand side you’re going to see again my my navigation bar I am an admin a global admin actually so I can access my Office 365 admin tools I’m going to click on admin it opens up a new browser Tab and takes me to my M365 admin Center… right here if I expand this lower section of the navigation pane I’m going to see that in the admin portal there’s a section called admin centers and some of the applications which are really more platforms have their own separate admin section SharePoint happens to be that way so I’m going to click on SharePoint another browser tab opens taking me to my SharePoint admin center… one of the very first things you’ll see when you come in here is that for SharePoint I have sites I have active sites these are the sites that are currently being used in the organization and then I have deleted sites… my SharePoint admin can come in select the site and notice up here there’s a restore button… currently we’ll see that sites are retained for 93 days… I’ve selected my site I’m going to click on restore notice this tells me this site is connected to an Office 365 group restoring the site will also restore the group… it’s no longer here under deleted sites if I come back into active sites scroll down and look for event planning it’s back where it was before.”

    15. Version History for Site Pages

    • Purpose: SharePoint Online automatically maintains a version history for site pages (and other content like document libraries). This allows site owners to view previous versions of a page and revert back to an earlier state if unwanted changes have been made.
    • Quote: “Built into M365 and also your SharePoint sites you have a tool called version history every time a user goes into a site and makes a change or an update it saves those changes under that user as a version and you can actually go in and revert back to a previous version if someone’s made a change that you don’t approve of.”
    • Accessing Version History: To access the version history for a site page, navigate to Site Contents, find the Site Pages library, click the ellipses next to the page name, and select “Version history.”
    • Quote: “The first thing I need to do is access my site pages to do this I need to go into a place of SharePoint in my site called site contents it’s kind of like going to the basement or the utility room of your site… in the site contents list I’m going to see that I have contents and subsites and the different elements of my site are listed here including site Pages this would show me the individual pages of my site now right here I have my home page this was the page that I updated… next to the name of the page I’ll see a vertical ellipses… I’m going to click on it and then I’m going to come down and go to version history.”
    • Restoring a Previous Version: In the version history, users can view details of each version (date, time, editor), and choose to restore a previous version, replacing the current version with the selected one.
    • Quote: “Every time someone has been in the site… it shows me the date and time and then also the user… what I’m going to do is go back to Lynn’s version click on the ellipses or in this case the arrow next to the date and time that particular version was created I can view properties of that version restore it or delete it in my case what I want to do is restore it so I’m going to click on the restore button notice what it tells me I’m about to replace the current version with the selected version I’m going to click on ok now I’m in a 2.1 version I’m going to go ahead and close out and then I’m going to leave my site contents view by just clicking on my site logo that’ll take me to the top of my site I’m going to see that when I come to it it’s reverted back to the previous version.”

    Conclusion

    The initial modules of this Microsoft SharePoint Online course provide a comprehensive introduction to the platform, covering essential aspects from accessing the service through Microsoft 365 to understanding different site types, managing their look and feel, and basic administrative tasks like site deletion and restoration. The emphasis on planning, understanding site terminology, and leveraging collaboration tools like Microsoft 365 Groups lays a solid foundation for new users and aspiring site owners to effectively utilize SharePoint Online within their organizations. The course encourages hands-on exploration of the platform’s features to solidify understanding.

    Frequently Asked Questions about Microsoft SharePoint Online

    • What is Microsoft SharePoint Online and why should I use it? Microsoft SharePoint Online is a cloud-based platform designed to help organizations manage and share content, facilitate teamwork, enable quick access to information, and create engaging web pages. It allows users to store, organize, share, and collaborate on files and information from anywhere with an internet connection, promoting seamless collaboration within teams and across the organization.
    • How do I access Microsoft SharePoint Online? You typically access SharePoint Online through Microsoft 365 (formerly Office 365). First, navigate to office.com in a web browser and sign in using your organizational email address and password. Once logged in to your Microsoft 365 home page, you can find SharePoint Online through the app launcher (the “waffle” icon in the top left corner) or by clicking on the SharePoint tile in your list of apps.
    • What are the different roles of users in accessing SharePoint Online? There are typically two main roles discussed: the typical user and the site owner. A typical user can access SharePoint sites they have permission to, view content, collaborate on documents, and participate in site activities. A site owner has more administrative privileges, including the ability to create and manage sites, control site settings, manage user permissions, and customize the site’s appearance and functionality.
    • What are Microsoft 365 Groups and how do they relate to SharePoint Online? Microsoft 365 Groups are a service within Microsoft 365 that connect different tools for collaboration. A Microsoft 365 Group can include a group of people with shared resources like an inbox, calendar, file storage (which is often a SharePoint document library), and more. They are often associated with SharePoint team sites, Microsoft Teams, and Planner, providing a unified membership and set of resources for team collaboration.
    • What are the different types of SharePoint sites commonly used? The two main types of SharePoint sites highlighted are:
    • Team Sites: Designed for collaboration within teams, allowing members to share files, work on projects, manage lists, and communicate. They are typically connected to a Microsoft 365 Group.
    • Communication Sites: Intended for broadcasting information to a broad audience, such as news, announcements, and reports. They are visually focused and usually have a smaller number of content contributors.
    • What is OneDrive for Business and how does it work with SharePoint Online? OneDrive for Business is your personal cloud storage within your organization’s Microsoft 365 account. It’s like your personal online filing cabinet for work or school files. While OneDrive is for individual file storage and sharing, SharePoint Online is for team and organizational content management and collaboration. You can easily share files stored in OneDrive with others, and often, the backend storage for files associated with Microsoft 365 Groups (and thus some SharePoint team sites) utilizes SharePoint document libraries.
    • What is the SharePoint Online start page and how can I use it effectively? The SharePoint Online start page is the initial screen you see when you access SharePoint Online. It displays content cards showing news updates and sites within your organization that you have permission to access. You can “follow” frequently visited sites by clicking the star icon, which adds them to a “followed” list for quick access. The start page also includes a powerful global search that searches across SharePoint sites, OneDrive, and other Microsoft 365 content.
    • How can I customize the look and feel of a SharePoint Online site? As a site owner, you have several options to customize the appearance of your SharePoint Online site. You can apply site templates to quickly add pre-designed content and layouts. You can also modify the site’s theme (color palette), header (including logo and layout), and navigation (placement and links) through the “Change the look” settings accessible from the site settings gear in the top right corner of the site.

    Microsoft SharePoint Online: Capabilities and Features

    Microsoft SharePoint Online is a cloud-based service from Microsoft designed to help organizations manage and share content, knowledge, and applications. It enables the creation of engaging web pages and facilitates seamless collaboration through the web. SharePoint Online is a key part of the Microsoft 365 ecosystem.

    Here’s a breakdown of important aspects of SharePoint Online based on the sources:

    Accessing SharePoint Online:

    • You typically access SharePoint Online through Microsoft Office 365 (now Microsoft 365).
    • One way to access it is by going to the office.com site and signing in with your organizational email address.
    • Once logged into your Microsoft 365 account, you can use the app launcher (sometimes called the Rubik’s Cube or the waffle) in the top left corner to find and access SharePoint.
    • You can also search for “SharePoint” in the search bar on the Microsoft 365 home page.
    • The SharePoint start page displays content cards showing news updates or sites you have permission to access.

    Key Capabilities and Features:

    • Content Management and Sharing: SharePoint Online helps organizations share and manage content effectively. It provides a platform for teams to store and collaborate on files.
    • Teamwork and Collaboration: It empowers teamwork by helping users find information and create seamless collaboration. Microsoft 365 groups play a crucial role in connecting different collaboration tools, including SharePoint team sites.
    • Web Page Creation: The platform allows users to create engaging web pages.
    • Document Libraries: These are like file folders within SharePoint sites where users can store and manage files.
    • SharePoint Lists: These are similar to spreadsheets within SharePoint, allowing you to organize information in rows and columns.
    • Search Functionality: Microsoft 365, including SharePoint Online, has a powerful search capacity that searches through file titles and contents, as well as sites, people, news, conversations (from Outlook and Teams), and even text within images.
    • Customization: Users can customize their Microsoft 365 environment, including the app launcher. SharePoint site owners can also customize the look and feel of their sites.

    Roles in SharePoint Online:

    • Typical User: Can access and interact with content within SharePoint sites based on their permissions.
    • Site Owner: Has the ability to create and manage SharePoint sites, update site content, manage permissions, and customize the site’s appearance and navigation.

    Integration with Microsoft 365:

    • OneDrive for Business: This is your personal cloud storage within Microsoft 365, allowing you to store, protect, and share your files. SharePoint document libraries can sometimes be accessed from within OneDrive for Business. Files created in Microsoft 365 applications are often automatically saved to OneDrive.
    • Microsoft 365 Groups: These groups connect various Microsoft 365 tools, including SharePoint team sites, Outlook, Planner, and Teams, allowing teams to collaborate effectively with shared inboxes, calendars, files, and task management.
    • Microsoft Teams: Team sites are often associated with Microsoft Teams, providing a website for team collaboration.
    • Microsoft Outlook: You can access and manage Microsoft 365 groups from within Outlook Online and the Outlook desktop application.
    • Microsoft Planner: This task management application is often integrated with Microsoft 365 groups and can be accessed from SharePoint team sites.
    • Delve: This application helps you manage your Microsoft 365 profile and discover and organize information and people within your organization. It respects existing permissions, so you’ll only see documents you already have access to.

    Types of SharePoint Sites:

    • Team Sites: Designed for collaboration within a team, allowing members to share resources and content, store files, and manage lists. They are often associated with a Microsoft 365 group.
    • Communication Sites: Intended for sharing news, reports, and other information with a broad audience in a visually compelling way. They typically have a small number of content contributors and a larger audience of consumers and are not connected to a Microsoft 365 group by default.

    Managing SharePoint Sites:

    • Site Templates: Pre-designed layouts and content that can be applied to a site to quickly set up its structure and appearance. Organizations can also create their own site templates.
    • Site Navigation: Site owners can customize the navigation of their sites, choosing between horizontal or left-hand navigation and editing the links.
    • Branding: You can update the look of your site by applying themes, customizing the header with a logo and title, and choosing different header layouts.
    • Subsites: While they were common in older versions of SharePoint, Microsoft recommends a flatter site architecture using team sites, communication sites, and hub sites instead. However, creating subsites is still possible.
    • Site Collections and Hub Sites: In older SharePoint versions, site collections were used to group websites with the same owner and administrative settings. In SharePoint Online, hub sites are recommended for unifying related SharePoint sites with common branding and navigation, enhancing content discovery. You need specific permissions to associate a site with a hub site and to manage the hub site navigation.
    • Deleting Sites: Site owners can delete sites, but it’s crucial to understand the implications, as this will delete all site content and associated resources, including the Microsoft 365 group if one exists.
    • Restoring Deleted Sites: SharePoint administrators or global Office 365 administrators can restore deleted SharePoint sites and their associated Microsoft 365 groups from the SharePoint admin center within a retention period (typically 93 days).
    • Version History: SharePoint Online automatically saves versions of site pages and documents, allowing site owners to revert back to previous versions if unwanted changes are made.

    Modern vs. Classic SharePoint Experience:

    • Microsoft introduced the modern SharePoint online experience in 2016, designed to be more compelling, flexible, and mobile-friendly compared to the classic experience. The modern experience generally offers easier editing and a more user-friendly interface.

    In summary, SharePoint Online is a powerful and versatile platform within Microsoft 365 that enables organizations to effectively manage information, collaborate on projects, and communicate with their users through customizable websites and integrated tools.

    Microsoft 365: Web-Based Productivity and Collaboration

    Based on the sources and our previous discussion, Microsoft 365 is a line of subscription web-based services offered by Microsoft. It encompasses a rich amount of tools, features, and functionalities accessible directly from a web browser. Formerly known as Office 365, the suite was renamed to Microsoft 365 in 2017.

    Here’s a breakdown of key aspects of Microsoft 365, drawing on the sources and our conversation:

    • Web-Based and Cloud-Based Applications: Microsoft 365 provides access to online or web-based versions of familiar Microsoft applications like Word, Excel, PowerPoint, and Outlook. These are cloud-based applications, meaning they run on the internet and can be accessed with just a computer, a web browser, and an internet connection. This allows for accessibility from various devices without needing to be on a specific computer where the software is installed locally.
    • Integration of Services: Microsoft 365 integrates various services and platforms to enhance productivity and collaboration. Our discussion has heavily featured SharePoint Online, which is a core component used for managing and sharing content, and creating engaging web pages.
    • Accessing Microsoft 365: You can access your Microsoft 365 account by going to office.com in a web browser and signing in with your organizational email address. Once logged in, you’ll typically see a home page with access to different applications. Your browser may remember your login for easier access in the future.
    • Home Page Features: The Microsoft 365 home page offers several common elements, including:
    • The app launcher (also known as the Rubik’s Cube or waffle), which provides access to all your Microsoft 365 applications. You can pin apps to the launcher for quick access and unpin them as needed.
    • Your organization’s name (potentially) and an indication that you are using the online version of Office.
    • Your profile picture or initials in the top right corner.
    • Quick access to recently opened or updated files.
    • A list of files you might need to access.
    • Options to view all your content.
    • Potentially an option to install Office desktop applications, depending on your organization’s setup.
    • A navigation pane on the left side with a list of application tiles (e.g., Word, Excel, PowerPoint, Outlook) that serve as doorways to the online versions.
    • A “Create” button that allows you to start new documents, presentations, and spreadsheets using the online applications. These files are automatically saved to your OneDrive for Business.
    • A powerful search bar that searches across your entire Microsoft 365 account, including file content, SharePoint sites, people, news, conversations (from Outlook and Teams), and even text within images.
    • Customization of the Environment: You can customize your Microsoft 365 environment through the settings gear in the top right corner. This allows you to change the theme, enable dark mode, and potentially update your password (though some settings might be controlled by your IT department). You can also access your account information and Delve (your Office 365 profile) from your profile picture or initials.
    • Integration with Desktop Applications: Microsoft 365 works in conjunction with your Microsoft Office desktop applications that are installed locally on your computer. When you open a file stored online (e.g., in OneDrive or SharePoint) in a desktop app, auto-save is typically turned on, and changes are automatically saved back to the online location. This provides the flexibility to use both web-based and desktop versions of applications.
    • Microsoft 365 Groups: These are a service within Microsoft 365 that help you connect different tools for collaboration. With a group, you can bring together a group of people to share documents, create spreadsheets, work on project plans, schedule meetings, and send emails. They are also important for Microsoft Teams, SharePoint team sites, and Planner. You can access and manage groups through Outlook Online and the Outlook desktop application.
    • OneDrive for Business: As mentioned previously, this is your personal cloud storage within your Microsoft 365 account for work or school. It allows you to store, protect, and share your files and access them from any device. It’s often the default save location for content created in the online Microsoft 365 applications.
    • Delve (Microsoft 365 Profile): This application helps you manage your profile, discover documents you have access to, and find information about and connect with people within your organization. It never changes permissions, so you only see content you already have access to.

    In essence, Microsoft 365 is a comprehensive suite of online services and applications designed to enhance productivity, communication, and collaboration within organizations, with SharePoint Online being a central platform for content management and teamwork.

    Managing SharePoint Online Sites

    Based on the sources, managing SharePoint Online sites involves several key aspects, ranging from initial planning and creation to ongoing maintenance and even deletion when a site is no longer needed. Here’s a discussion of site management drawing on the provided text:

    Planning Your Site

    Before creating a SharePoint site, strategic planning is crucial for maintainability and user productivity. This involves considering:

    • Navigation: Deciding where the site navigation should be (top or left) for easy access.
    • Content: Determining the types of lists (for tabular data like contacts or tasks) and libraries (for file storage) needed. Document libraries allow users to store and collaborate on files.
    • Pages: Planning the individual pages for displaying content within the site. Each page in a SharePoint Online site is considered a site page.
    • Apps: Considering which applications or features, beyond lists and libraries, will support users in their tasks. This can include news feeds and calendars.

    Creating a Site

    To create a SharePoint site, you typically need the necessary permissions, which are often granted by a SharePoint administrator or an M365 Global administrator. From the SharePoint start page, you can choose to create a site, selecting between a team site (for collaboration and file sharing among a team) or a communication site (for broadcasting information to a broad audience).

    When creating a site, you’ll need to:

    • Name your site, which will also generate an Office 365 group and a site URL. The site URL cannot be easily changed after creation.
    • Provide a site description to inform others about the site’s purpose.
    • Configure the privacy settings (private for invited members only, or public for anyone in the organization to view).
    • Add site members (who can access and edit content) and designate site owners (who have more control, including managing membership). The creator of the site is automatically a site owner.

    Utilizing Site Templates

    SharePoint Online offers site templates that provide pre-built content and layouts for various purposes (e.g., event planning, project management). Applying a template can quickly add structure and features to your site, though it won’t delete existing content. You can access site templates through the site settings (gear icon) and “Apply a site template”. There are templates provided by Microsoft and potentially templates created by your own organization.

    Understanding Site Structure

    • Subsites: While historically common in older SharePoint versions, modern SharePoint Online recommends avoiding subsites in favor of a flat site architecture using team sites, communication sites, and hub sites. Subsites can complicate migrations and management. If needed, subsites can still be created under “Site contents” in site settings, but they often rely on the classic experience.
    • Site Collections vs. Hub Sites: In the past, a site collection was a group of websites with the same owner and administrative settings, often using subsites. Modern SharePoint Online utilizes hub sites to achieve similar unifying goals (common branding and navigation) without the complexities of subsites. A hub site connects related SharePoint sites, providing common navigation and branding, and allowing content to roll up into a centralized display. Hub sites need to be created by a SharePoint administrator. Site owners with permission can associate their sites with a hub site through the site information settings. They can also add their site to the hub site’s navigation if they are owners of the hub site.
    • Site URLs: Understanding the structure of a SharePoint Online URL helps in navigating and understanding where you are within the organizational SharePoint environment. A typical URL includes https://<yourcompanyname&gt;.sharepoint.com/sites/<yoursitename>/<optional_subfolder_or_list>.

    Managing the Site Look and Feel

    • Themes: You can change the overall color palette of your site by applying a theme through site settings > Change the look > Theme.
    • Header: The site header can be customized in terms of layout (minimal, compact, standard, extended), background color, and logo through site settings > Change the look > Header. You can upload a site logo (both a thumbnail and a larger version) to brand your site. If no logo is provided, SharePoint may use the first letters of the site name. The site title can also be turned off in the header settings. Another way to update the site logo is via site settings > Site information.
    • Navigation: The site navigation (typically on the left) can be turned on or off and its orientation can be changed to horizontal via site settings > Change the look > Navigation. As a site owner, you can edit the navigation to add, remove, rename, and reorder links.

    Maintaining Your Site

    • Version History: SharePoint Online automatically keeps track of changes made to site pages and documents through version history. This allows you to revert back to a previous version if unwanted changes occur. You can access the version history for a page via site contents > Site Pages > (select page) > ellipses (…) > Version history.

    Site End-of-Life Management

    • Deleting Sites: Site owners with the necessary permissions can delete a SharePoint site via site settings > Site information > Delete site. Deleting a site removes all its content, including files, lists, and any associated Office 365 group. It’s crucial to ensure content is backed up if needed before deletion.
    • Restoring Deleted Sites: If a SharePoint site is accidentally deleted, a SharePoint administrator or Global Office 365 admin can restore it from the SharePoint admin center within a certain retention period (e.g., 93 days). Restoring a site also restores its associated Office 365 group.

    By understanding and utilizing these site management features, site owners can create effective, well-organized, and easily navigable SharePoint Online environments for their teams and organizations.

    Understanding SharePoint Team Sites

    Based on the sources, a SharePoint team site is designed to connect you and your team together to share resources and content. It serves as a central place for teams to store and collaborate on files, and to create and manage lists of information. Team sites are a key component of the Microsoft 365 ecosystem and are closely integrated with other Microsoft services.

    Here’s a more detailed discussion of team sites based on the provided information:

    • Purpose and Functionality: The primary goal of a team site is to facilitate teamwork. It provides a platform where team members can work together on projects, share documents, manage tasks, and stay informed. Team sites are intended for collaboration within a specific group, where members typically have permission to contribute and edit content.
    • Integration with Microsoft 365 Groups: Team sites are often regulated by an Office 365 group, which helps to manage the membership of the team and provides shared resources like a group calendar and potentially a shared inbox. When you create a team site, an Office 365 group and a calendar are typically created along with it to help manage events and communication.
    • Identifying a Team Site: When you navigate to a SharePoint site, you can often identify it as a team site by several common features:
    • The title of the site is usually visible in the top left corner.
    • You will still be within the Office 365 ecosystem, indicated by the presence of the app launcher in the top left.
    • The search bar at the top typically defaults to searching within the specific site you are currently on.
    • In the top right corner, you can often see a list of team members, including team owners and members, indicating who has access to the site. Both owners and members typically have permission to edit content at different levels.
    • The site usually has a left-hand side navigation menu to access different areas of the site.
    • Common Elements within a Team Site: Team sites typically include various components to support collaboration:
    • Document Library: This is a file storage area (like a “walk-in closet” for the group) where team members can store, share, and collaborate on files. It consists of folders and various types of files, not necessarily just Microsoft-related. Members often have permission to co-author documents within the document library.
    • SharePoint Lists: These are used to organize information in a tabular format (rows and columns), similar to a spreadsheet. Lists can be used for various purposes, such as tracking tasks, contacts, or product information, and authorized users can often update the content.
    • Recycle Bin: Similar to a deleted items folder, the recycle bin stores deleted content from the site, allowing for potential recovery within a defined retention policy.
    • Team Calendar: Often linked to the associated Office 365 group, the team calendar allows members to view and manage shared calendar events for the team. This calendar is usually accessed through Exchange Online.
    • OneNote Notebook: When a team site is created with an Office 365 group, an empty OneNote notebook is also created for the team to collaborate on notes, meeting minutes, FAQs, etc.. It is accessible from the team site and opens in OneNote Online.
    • Planner: Team sites often have an integrated Planner app, which is a task management tool that allows team members to view, assign, and manage tasks within a shared plan.
    • Site Pages: These are the individual web pages within the team site where content is displayed.
    • Creation of Team Sites: If you have the necessary permissions, you can create a team site from the SharePoint start page by clicking “Create site” and selecting “Team site”. You will then need to name the site, configure settings (like privacy), and add members and owners. The site will be created with an associated Office 365 group.
    • Modern Experience: Modern SharePoint Online, introduced in 2016, aims to provide a more compelling, flexible, and user-friendly experience for team sites, with features like easier drag-and-drop functionality and optimized views for lists and libraries.

    In summary, SharePoint team sites are powerful platforms designed to foster collaboration and information sharing within teams in an organization utilizing Microsoft 365. They provide a range of integrated tools and features accessible through a web browser, making it easier for teams to work together effectively.

    SharePoint Communication Sites: Purpose and Features

    Based on the sources, a SharePoint communication site is designed to share news, reports, status updates, and other information in a visually compelling way with a broad audience. It serves as a portal for broadcasting information across a large group of people within an organization. Many organizations utilize communication sites as their intranet sites.

    Here’s a more detailed discussion of communication sites based on the provided information:

    • Purpose and Audience: The primary purpose of a communication site is to disseminate information. Unlike team sites focused on collaboration within a specific group, communication sites are intended for one-way communication, where a smaller set of contributors creates content that is then consumed by a much larger audience.
    • Key Characteristics:
    • Visual Appeal: Communication sites emphasize a visually compelling presentation of information.
    • Broad Reach: They are designed to broadcast information to a wide audience within the organization.
    • Limited Contributors: Typically, a small number of members have permissions to contribute and manage content on a communication site.
    • Top Navigation: The navigation on a communication site is commonly located along the top of the page.
    • Absence of Member List: Unlike team sites, communication sites typically do not display a visible list of site members in the top right corner, reflecting their focus on information sharing rather than team collaboration.
    • Distinction from Team Sites: A key difference between communication sites and team sites lies in their primary function and associated features:
    • Collaboration vs. Information Sharing: Team sites are designed for collaboration, allowing team members to jointly work on files and manage tasks. In contrast, communication sites are primarily for sharing information with a wider audience.
    • Microsoft 365 Group Association: When you create a team site, an Office 365 group is typically created to manage membership and provide shared resources like a calendar. However, when you create a communication site, a Microsoft 365 group is not created. This reinforces the communication site’s focus on broadcasting information rather than group-based collaboration features like a shared inbox and calendar directly associated with the site’s membership.
    • Common Elements within a Communication Site: While the specific content can vary, communication sites often include elements that facilitate information sharing:
    • News Releases: These sections provide updates on important events and recent happenings within the organization.
    • Links to Resources: Communication sites often include links to essential resources that employees or the intended audience might need.
    • Calendars of Events: Displaying organizational or relevant events in a calendar format is a common feature.
    • Opportunities for Engagement: Some communication sites may include features to allow audience interaction, such as chat panes (potentially powered by platforms like Yammer) for Q&A sessions or discussions with leadership.

    In summary, SharePoint communication sites are powerful tools for organizations to effectively share information with a broad audience in a visually appealing manner. Their design and features prioritize the broadcast of news, updates, and resources over the collaborative functionalities found in team sites, and they are distinct in their lack of an associated Microsoft 365 group.

    SharePoint Online Basics Tutorial

    The Original Text

    hey everyone welcome to Microsoft SharePoint online during this series of modules or courses we’re going to learn all about SharePoint online and how you can manage and share content and also create really engaging web pages using this amazing platform we’re going to discuss what it’s like to be a typical user in a SharePoint site and also a site owner this is a great course to go through if you’re looking to create your own SharePoint sites and manage them also if you’re going to become a new SharePoint site owner you’ll be amazed at the great potential that SharePoint online has for both the site owner and the end user so join us on our journey through SharePoint online hi everyone Welcome to our first module in our Microsoft SharePoint online Series this class is designed for someone who is new to SharePoint in this course we’re going to explore how to access SharePoint online through office 365. after completing this course you should be able to understand why to use SharePoint online the different roles in accessing SharePoint how to log into Office 365 and also successfully navigate in a SharePoint online site as always if there are any exercise files that go at this course you’ll find them in the video description so join us on our SharePoint online Journey hi everyone Welcome to our module one of SharePoint online now the first thing we need to do to access SharePoint online is actually go into another Microsoft platform called Microsoft Office 365 or Microsoft 365. in 2017 Microsoft introduced a line of subscription web-based Services through Microsoft that also includes Microsoft Office and they called it office 365. it’s been recently renamed to Microsoft 365 but one of the doorways to SharePoint online is to go through office 365. now the other thing we’ll be doing is accessing SharePoint and just a reminder of what SharePoint online is there are previous versions of SharePoint that have been created by Microsoft over the years but now we’re looking at a web-based platform called Microsoft SharePoint online SharePoint online is also a cloud-based service some organizations use it in conjunction with Microsoft 365 and some of them use it as a standalone web-based application or platform but the great thing about SharePoint online is that it really helps organizations to share and manage content and knowledge by empowering teamwork quickly helping them to find information and creating seamless collaboration through the web so the first thing we need to do is access office 365. to do that we’re going to be logging into the office.com site in my training environment I’m going to be using Microsoft Edge this is a Microsoft training platform but you could really use any browser you prefer for example Microsoft Edge or even Google Chrome now I’m going to go ahead and click right here and go into my browser now as I do this I’m going to come up to my address bar and type in office.com this is going to take you directly to the login page for M365 or Microsoft 365. right here I need to click on sign in and then of course I’m going to paste in my email address I’m playing the lovely Megan today and then I’m going to click on next I’ll need to provide my organizational email address because I will be logging into a work Office 365 account it’ll also ask me about reducing the number of times I have to sign in this is a great thing to do and I do suggest checking this box because if you sign into different applications that are part of Office 365 this will help you not have to log into each one separately now we’re going to be going to my home base or my Office 365 home page so let’s just really briefly look at a few common elements of this home page number one top left hand corner I have the app launcher next to it I might see my organization’s name and then that I’m in office but this is the online version of office so again this will be our jumping point to get into SharePoint online hi everyone welcome back now if you’ve already logged into your Microsoft 365 account it’s really easy to get back using your default browser because your computer is going to remember that you’ve already logged in using your company password and also your email account so I’m going to click back here again on my browser of choice which is Microsoft Edge and this is going to take me into my browser then to access again my Office 365 account I’m going to come up here and just type in office.com this time it’s going to remember that I’ve already logged in and not require me to log in again let’s look at some more common elements that you’re going to see when you log into Microsoft Office 365. in the top right hand corner you’re either going to see your profile picture or your initials I’m playing Megan Bowen right now so we’re seeing cute smiley Megan up there not every company will put your profile picture in there but some of your companies will allow you to do that it’s also important to remember that I’ve logged into a work or school account that’s why sometimes people call Office 365 their Microsoft for work or their Microsoft for school but it’s also important to remember that when we’re talking about Microsoft 365 we’re talking about web-based applications these are cloud-based applications meaning that all you need for them to run is actually your computer a web browser and the internet and this is one of the really powerful things about the cloud Revolution that’s begun happening is we don’t have to be actually logged into the same computer all the time our information can be accessible through a website now another thing we’re going to see that’s very common in the Office 365 home page is it gives me access to things that I use all the time so notice for example here I’m seeing files that I’ve recently opened or updated also if I come down I’m going to see basically a list of files that I might need to access and you’ll see here that it’s telling me I recently accessed these files and have worked with them so it’s basically giving me a jumping board to get back to them again if I scroll down towards the bottom I’m also going to see options where I can go in and see all my content this is really kind of a jumping board like you’ve heard me talk about to get to files I work with a lot and also the online versions of the Microsoft applications now speaking of those let’s scroll back up to the top and notice that in my case I have an option here to install office now chances are this has already been done for you on your computer but the idea is that with Microsoft 365 the way that my organization has it set up I also get access to Outlook OneDrive for business word excel and other Microsoft applications so Microsoft 365 Works in conjunction with my Microsoft Office desktop applications remember when we say the word desktop we’re talking about the Microsoft applications that install locally on your computer’s hard drive or a network and they would require you to be on that specific computer to access the soft software now again this is a great opportunity to check Office 365 out so go into your own computer and if you have an Office 365 account try logging in to office.com and spend a little bit of time exploring this home page and see all the great things that are packed in it hey everyone when it comes to Microsoft 365 it’s amazing how much you get so the Microsoft 365 applications include a rich amount of tools and features and functionalities that help you do so many things just from your web browser one great way to see some of the different applications that are part of the Microsoft 365 family is to come over to the left hand side to what we call the navigation pane of your Office 365 home page you’ll see over here on the left that I see a list of application tiles and some of these are familiar Microsoft Word Excel PowerPoint and Outlook but the thing to remember is that from The Office 365 homepage these are doorways to the online or web-based applications there are also going to be desktop applications that install locally on your computer but this isn’t all there are actually more apps if I come right here to the apps tile at the bottom and click on it it will actually show me additional applications that I don’t currently see in my navigation pane also if I go to the very top left hand corner we’re going to see a very familiar feature of Microsoft 365. this is called the app launcher sometimes people give it other names like the Rubik’s Cube or the waffle but the correct term is app launcher and from anywhere where you are in Microsoft 365 this allows you to see a list of all your M365 applications if I come down to the very bottom I’m going to see it say all apps and this is a list of the different applications that are part of my organization’s Microsoft 365 environment some of these I use all the time and some of them I don’t use as often now when I come back and look at this list I’m not going to see all of them on the list when I go to all apps I see everything I could potentially use if there’s something in this list that I’d like to add to the main menu I can actually come to the item the app and the app tile in this case and I’ll see a vertical ellipses on the side of it this is going to take me into a menu for options to manage this particular app tile if I select pin to launcher what this does when I return back to the main menu is it takes that particular app tile and it pins it in this case I’ve actually pinned the lists application which is a great way to create lists to put in SharePoint sites by the way and I’ve pinned it to my app launcher so the next time I need to go in and access it all I have to do is click on it and it will be there in addition if you’ve pinned something and then decide you don’t need it you can actually come to the tile click on the three dots at the side and say unpin from launcher this is not going to remove it from your all apps list notice if I go back I will still see good old Yammer down here at the bottom but from my main app launcher list I won’t see it there anymore so you can control which apps you see on the app launcher and which ones you don’t and again it’s a great way to really customize your Office 365 environment go in and check it out in your own account hi everybody now I know that this is a SharePoint course but we want to spend just a tiny bit more time helping you understand how amazing The Office 365 home page is over on the left hand side in my navigation pane I have the ability to create new content using Microsoft 365. when I click on this create button you’re going to see that it gives me options to create new Word documents PowerPoint presentations even Excel files using the online versions of the Microsoft applications so for example if I need a new spreadsheet I can click right here on workbook it’s going to open up a new browser tab notice here that I still have my Microsoft Office 365 homepage browser tab open but now Microsoft Excel online has also opened in a browser tab of its own I’m in a blank workbook and I’m ready to start working now for example if I want to start typing in this particular cell all I have to do is click and start typing now a few things that are unique about working in the Microsoft 365 applications you’re in a web browser but you can still type and create new content this content is automatically being saved to my OneDrive for business which is again my own personal work storage for files also I don’t have to worry about saving things because we’re working in a web browser so everything saves in the background automatically now how can I know that’s going on well notice if I come in and add some additional information to the spreadsheet in short increments what I’m going to see it do up here is say saving it happens so fast though sometimes it’s really difficult to notice that it’s occurring but everything is saving for me in the background as I do it and as I mentioned the default save location is OneDrive for business that we’re going to talk about in just a few minutes by the way now if I’d like to give my spreadsheet an updated name because right now it’s defaulting to call it book one I can actually click right here where it says the name and I can just come in and type in the name that I want and as soon as I hit enter it’s going to update the name because by default it’s going to give my new spreadsheets the same name as a new blank workbook and now you can see that on the browser tab I see the updated name so again as far as Office 365 goes it’s just like creating a spreadsheet on your normal computer but you’re doing it through a web browser application and you don’t have to worry about saving things and again this is something that you can try out yourself go into Office 365 and try using one of the Microsoft Office 365 applications it’s a great way to get familiar with the platform all right what if you need to find something in your Office 365 homepage well Microsoft has you covered it has one of the most powerful search capacities of any website I’ve ever used when you do a search on your Microsoft Office 365 home page it’s not only going to be searching through the titles of files it searches through their contents let me show you what I mean up here at the top of my Microsoft 365 homepage I have a search button when I click on it I’m going to type in the name of a contract that I’ve been working on in this company you’ll see that it already starts looking for search results for me but I want to delve even further into these search results so I’m going to come right here and select show more results it’s going to take me to a comprehensive list of search results and it actually filters them for me so convenient the first tab is all the content and notice I could come in actually right here and filter even by PDFs and photo types if you come down you’ll see other options as well but if you’d rather just use the tabs you can actually work your way to the right the first tab is for any files that have that word Northwind either in their title or within their contents so we won’t see it actually in all the titles because in some places it actually appears within the content and you’ll see here where it shows me a little quick quip or a little shot of where the word is occurring within the content of the file then I have sites these would be SharePoint sites where this word is located within the site I actually don’t have any when I go to people these would be people that are involved with the Northwind project and it includes both their email address and a phone number news are going to be news postings on SharePoint sites and you can see here how the word Northwind is actually occurring within the text of that particular news posting conversations is an interesting one you’ll see this includes content from Outlook and also from Microsoft teams and this is where the word Northwind has been included in either email content or within a team’s chat or a posting within a channel you might be saying that’s not part of Microsoft 365 but believe it or not it actually is especially if you’re off your company is using Exchange online all of your outlook information is now housed online and is part of your Office 365 account this is my favorite one images you’re going to see here a ping or a screenshot of what we call a dashboard but in this screenshot again this is just a picture we see the word Northwind actually inside and so it comes up in the search results Isn’t that cool it’s actually looking through not only the words but it’s looking through images and finding words in the images now the final thing I want to show you here is power bi this is a dashboard report building tool that’s part of Office 365 and I actually don’t have any North winds inside any of my current dashboards or reports but if I did they’d come up in my search results now if I want to actually go back and open one of these files up notice I can come in I can search based on file type I can also come in and filter based on the last time the file was modified and based on that information that will help me to refine my search results and if I see something that I want to open up all I have to do is come in click on it and it opens and again the browser-based version of the application so in this case it’s Excel online that’s opened and I’m able to access the content because you’ll never see something surfaced in the search results of Office 365 that you don’t have permission to access when I’m done all I have to do is click on the browser tab for Excel online to close the search results go back to my office 365 home page if I actually just come back over to the left hand side and click on the home button that’s right underneath my app launcher it’ll clear my search but the big takeaway from this is that searching in Office 365 is global through your entire Office 365 account and we can do this right through a web browser so it’s super cool if you have access to Office 365 go into your own account and try it out and and see how powerful the search can be hi everyone now with Office 365 what can you do to customize the environment and get to your stuff this is a great question first of all if I go to the top right hand corner of my Microsoft 365 home page you’re going to see a little white gear this is something that you will see throughout Office 365 web-based applications this represents the way to basically get into your defaults for your Microsoft 365 account when you click on it you’re going to see it open up a settings task pane when I come in I can do things like update for example the theme of my Microsoft 365 account you can see how it’s added it here in the background also I can go from the default color scheme of Microsoft 365 to dark mode this is actually really good for people that might be visually impaired or colorblind so there’s a reason for it and believe it or not it’s supposed to be easier on your eyes when you’re staring at a screen all day I’m going to keep mine on the default which is the white on white background you’ll also see some other options like change your password but keep in mind some of these settings may be controlled by your it Department to keep things secure and safe when I’m done making these changes I can come up to the X in the top right hand corner and click on it and the settings pane will close now another place that you can go to get information about your Microsoft 365 account is by going up to your initials or your profile picture that are directly to the right of the settings gear this will let you know whose account you’re logged into and if you want to see for example your account information if you click on view account it will open it up and actually take you in so that you can see your account information inside of Microsoft 365. this all opens in its own separate browser Tab and that’s the thing we’ve got to remember about Microsoft 365. it’s a browser-based application so everything runs inside the web browser we’re going to close that Tab and go back to our home page now another great thing they’ve added recently is the my content folder tile this is over in the navigation pane I love this because when I click on it it’s going to take me to a list of recent files that I’ve used in different areas of Microsoft 365 that I’ve accessed so any file from any application that I’ve opened using Office 365 I’ll see on this list and it’s a great way to quickly jump to the file or to the location all I have to do is come in and click on it and it’s going to open of course it will use the Microsoft 365 version of the application to open so this particular word document opened in word online in its own browser tab because that’s what it will default to we are using a web-based platform so it’s going to default to the web-based applications the other thing that’s really powerful about this platform is that it will interface with your desktop applications and I just want to show you that briefly so you can have ease of mind that you’re not going to lose the ability to get to them I’m going to open this PowerPoint presentation and of course it’s going to open in good old PowerPoint web application or powerpoint online but if I would prefer to edit this presentation in the desktop version of PowerPoint as long as powerpoint’s installed on my computer notice that next to the ribbons of powerpoint online I have an editing button this lets me choose how I will have this file be edited so right now I’m in editing within the browser-based version of PowerPoint but I can also come down and select open in desktop app what will happen is my computer will actually launch Microsoft PowerPoint it’s not open right now so it can take a few moments for it to open but the other great thing about this is then the same PowerPoint presentation that was just opened in powerpoint online will actually open on my desktop so notice down here I see good old PowerPoints open and it’s the exact same PowerPoint presentation a few unique things happen when you do this when you open something that’s been stored from an online Source now in a desktop app your auto save button will be turned on to let you know that if you make any changes for example if I come in and add some content it will automatically save this back to wherever this particular PowerPoint file is stored online if I close it everything’s still going to be saved and it will take me back to powerpoint online if I say continue here it will refresh and what we’ll see is any changes I made to the file in the desktop platform are still being added to the file here because it doesn’t matter if the file is open in powerpoint online or in PowerPoint desktop it’s both saving back to the internet and to my Microsoft 365 account it’s really powerful because you get the best of both worlds you can use powerpoint online you can use PowerPoint desktop it doesn’t matter and you can choose which one you utilize to update your files check it out welcome back everyone I want to show you one of my favorite tools that’s part of the Microsoft 365 ecosystem and it’s also important to Microsoft SharePoint online it’s actually called a Microsoft 365 group now groups are a service that work inside Microsoft 365. they help you really to connect different tools that you need to collaborate with a Microsoft 365 group you can take a group of people and actually write documents create spreadsheets work on project plans even schedule meetings or send email to that group of people so it’s more than just a glorified inbox for a group of people because it allows you to do many more things also know that Office 365 groups are actually really important in things like Microsoft teams SharePoint team sites and even inside of the planner application when you want to share a plan with co-workers so first of all where some of the doorways to access a Microsoft 365 group one of the really common places is through Microsoft Outlook now we’re going to start by using Outlook online so I’m actually going to come over to my navigation bar in Office 365 I’m on my home page and I’m going to click on the Outlook tile this is in a separate browser tab is going to take me into outlook on the web or Outlook online this is of course all the great utility of Outlook but from a web browser now inside of Outlook online to access my groups I’m going to come over to my folder pane remember that this is going to be next to your navigation bar and it’s not uncommon for it to be minimized so make sure it’s Again full so that you can see the folder task pane then to access your groups you’re going to want to scroll all the way down to the bottom you’ll see that groups are also something that can be expanded and collapsed so make sure that you have them open so that you can see them now what exactly are these groups well first of all they have a name and in most cases they are a group of people inside an organization that need a way to collaborate doing things like sending email to each other having a shared calendar and even using other tools like a plan inside of Microsoft planner now can I include guests in my groups I can if that’s been turned on by your Office 365 admin but let’s just take a minute and look at some of these groups and the tools that you get with them the first thing I want to do to access my group is click on its name now when I do that I leave my inbox and I actually come to an inbox specific to my group notice it has the same name as my group now some people might look at this and say oh great another glorified distribution list or email group Office 365 or Microsoft groups are actually a lot more than that the first thing though that you can do is send emails so if I come right here and click on the send email button it’ll actually allow me to send an email to everyone who’s part of my group notice how my group has an email right here that’s specific to them and anyone who’s part of this group will get this email there are a lot of additional great tools that you can get with groups so we’re going to explore that that in a future lesson so make sure you come back and if you have access to Outlook on the web try going in and seeing if you have any groups hi everyone while we’re exploring Microsoft 365 groups I want to show you some of the great collaboration tools that come with this service so right now I’m in Microsoft on the web or Outlook online and I’m going to access my groups by going over to my folder Pane and scrolling down towards the bottom where I see the different groups that I have access to the group that I want to go to is called my market project team group this is actually a group created for this company internally to help a group of people manage a project that they’re working on I see some great information at the group up at the top of the group name I’m going to see that it’s a public group this means that it’s discoverable to other people inside my organization using tools like the delve application it also shows me how many team members I have inside my group now Beyond sending group email like we’ve already explored another great thing that a group can do is give me a shared repository for files that this group needs to work on their project to access that area and come directly to this little piece of paper button this is actually way to go to the shared files that this group has in common when I click on it it takes me to what’s called a document Library this is actually part of a SharePoint site but we’re able to access it here from inside the Outlook web application which really helps to streamline things because if I’m sending an email and think about one of the files I need to work with with this group I can automatically get to it the top I’m going to see recent files that different group members have worked on recently and then down below I’m going to see the files and folders that the group has shared in common as part of this group experience another great tool is a shared calendar so I’m going to come up now again and click on the shared calendar button this takes me into another browser tab for the calendar web application and it’s going to take me specifically to the group calendar that’s been set up notice over here on the left that my market project team group calendar is checked off and I can see all the different calendar events that again are viewable and editable to any member of our group if I close the tab it will take me back to Outlook on the web now I have some additional really awesome tools here that I want to show you that are part of the collaboration that a Microsoft 365 group provides I’m going to come again up to those same buttons that allowed me to access the group calendar and the email and I will see an ellipses we see these all over in Office 365 they help us get to other great tools when I click another one of the tools that a group will have in common is an empty OneNote notebook this is created when the group is created and it allows them to have a notebook where they can do things like add meeting minutes store FAQs and again it’s part of the group experience and every member of the group has permission to access this notebook you’ll see right here the name of the notebook is always part of the group name and again it’s a great way for the group to have collaboration to exit out of the notebook all I’m going to do is just click on the browser Tab and I’ll go back to Outlook on the web we’d love to have you try this out so please go into to your outlook online and see if you have any current groups that you’re part of and explore hi everyone we’re back in Outlook online exploring Microsoft 365 groups there’s still just a couple more great collaboration features inside a group that I want you to see so from the Outlook online or web application I’m going to come to my folder Pane and again travel down to the bottom where I can see the different groups that I’m part of in the Mark 8 project team group we’ve already explored that groups allow you to have a shared inbox for every member of your group also shared files and even assured calendar and if we come to the ellipses under the group name we’re also going to see a thing called planner now planner is a task application that’s part of your Microsoft 365 platform and when you click on planner it opens up the Microsoft planner application inside of a browser tab now planner is a great application for viewing tasks inside of what are called buckets so here I’m seeing a plan that’s already been created for my Microsoft group and it allows every member of the group to be able to access the plan go into the different tasks that are part of this plan and edit the tasks and work on them together when I’m done viewing my plan I’m going to click back on the little X to close the planner app and go back to Microsoft again and Outlook online from here the next item that you have access to from an Office 365 group when you click on the ellipses is a site and notice the letter s next to this this is actually our SharePoint Online logo that we’re going to see as we start exploring SharePoint online in more detail when I click on site I’m going to see another browser tab open this is taking me to a SharePoint site it’s actually what we call a team site it’s a site that’s been created to allow my Microsoft group to have a place to collaborate within a website and right here I’m actually seeing the plan that I was just in inside of the Microsoft group so another again element or collaboration function of a group is a SharePoint site now to go out of the SharePoint site I’m just going to click on the X on the tab and it will take me back to Microsoft again and back to the Microsoft Outlook web application what we’re going to explore next is how to create groups so again try going into Outlook online and see if you are part of any groups welcome back everyone we want to now look at how easy it is to create your own Microsoft 365 group for this I’m an Outlook online or outlook on the web and I’m going to come over to the folder Pane and scroll down to the bottom to access the different groups that I’m already part of down towards the bottom I’m going to see that there are options to allow me to create a new group discover groups or manage groups that I’m part of to make a new group of my own I’m going to select new group this is going to take me into where I can give my new group a name as I do this it’s going to create an email account for my group I can update this by just changing this name up here I’m also going to include a description this would help other people if they were discovering my group to know what my group is about now before I’m done I also want to come in and edit the default settings of my group this has to do with the privacy of my group so when I click on edit we’re going to see that I have two choices for the privacy setting private would mean only members of the group can see what’s going on inside public would allow other people to view what’s going on inside of the group both of these settings will allow people to request or join the group I’m going to keep my group private because I’d like more control and I only want people who are part of the group to know what’s going on inside the final setting is do you want members of your group to receive notifications in their inboxes when there are group conversations or events going on I’m going to turn that off because it can add a lot of traffic to my inbox and to my also to my group members and boxes and I’m going to click on create now I’m not done because the next thing I need to do is invite again co-workers and others to join my group now this right here is a list of people who are already part of groups that I’m in and I can just double click on their names and it will automatically add them but then I can also come in and just start typing in the first few letters of a co-worker’s name and it will also allow me from my company address list or active directory to add people to my group this way I can always come back in later and edit this group membership after the group’s already been created it’s really easy to do let me quick and just add a few more people to my group now if someone is outside my organization and my company allows for guests to be added to my group I can type in their email address up here and it will allow me to add them when I’m done adding everyone to my group The One Last Choice I need to make is if I want some additional owners notice next to each group member’s name they can either be a member or an owner I’m going to make both Lydia and Patty owners now what’s the difference between a member and an owner a member can fully participate in all the group’s great functionality but an owner is actually someone who can edit the membership of the group so owners have a little bit more ability to do things also if you create the group you’ll automatically be again an owner of the group now I’m going to click on ADD we’re going to see that when I’m done my group is going to be created in fact it takes me directly to my group notice right here we can see again my group over here on the left if I click on it also if I want to access that group all I have to do is come in here click on the three dots at the side side and come down to settings settings allows me to go in and again decide how those if you notice right here how I decide how notifications will be sent for the group and also if I want to come in and edit the group itself I can also come right here and edit its name now we’d love to have you try this out so go ahead and try creating a group of your own inside of Microsoft 365 and start using some of the Great functionalities welcome back everybody I want to show you how to manage Microsoft 365 groups so from Outlook online I’m going to come over to the groups that I’m already part of in my folder pane now what I have here is the ability to discover groups these are going to be groups that I’m not currently part of right here I’ve already come in and I’m going to type in the name of a group that I’d like to join I’ve just typed in us and then I’m going to come down and you’ll see here there is a group that I’m not currently part of that it’s giving me an option to request to join it’s even showing me a contact card so I can see who’s currently part of this group when I click on request to join I can include a message that will allow me to become part of that group and then one of the owners of the group will have to give me permission to join to leave a group what I need to do is come into the settings of the group so I’m actually going to come down to one of the groups that I no longer need to access and click on the group now at the top I’m again going to see the name of the group whether it’s public or private but also the ellipses that allows me to get into the settings for the group I’m going to come down to the settings gear and on the right I’ll see my group settings task pane Open Notice down here at the bottom it gives me an option to leave this group this would mean that I would no longer see this group over in the list of groups that I’m part of on the left hand side in my folder pane of Outlook online now finally what about just managing all the different groups that I’m part of for this I have a manage groups option when I click here it’s going to take me and show me the different groups that I’m currently part of in fact it refreshes and opens up the People application because this is where my group membership is managed from as I come in and look at the different groups that I’m part of if I’m an owner of a group I’ll see that so when I come here I can see that there is again a list of the group members and if I expand it out it actually takes me in so that I can see each individual member and if they’re an owner or a member remember you can also have guests depending on the security inside of your organization’s Office 365 or Microsoft 365. so right here I could actually come in and take one of my current members of my group and make them an owner and remember owners are people who can manage the settings of the group when I’m done all I have to do to access my group is Just Close My People app it will update all those settings and allow me to come back in and in normal Outlook online I can start managing my groups from there so remember groups are a tool to help you collaborate the reason we’re showing you how to get to groups from Outlook is because we use outlooks for so many things already it’s a great place for all the different collaboration options of groups to come into play because you’re already in the Outlook online web application and try it out on your own create some groups and start using them to help you manage products or I should say projects within your organization hi everyone we’ve been exploring Microsoft 365 groups and we’ve been doing it from Outlook online but another great Doorway to your Office 365 groups is from inside Outlook desktop because we know a lot of organizations use Outlook desktop because it gives you all the great tools that we’re used to in an email platform now I’m inside Outlook desktop and I want to access my groups notice over here that I have my folder task pane open and if I come down towards the bottom I’m going to see the groups that I’m part of inside my organization now from here all I need to do to access a given group is actually just click on its name and we’ll see that specific groups inbox open so again this is the shared inbox where we can receive mail through our group and then up on the top I’ll see the home ribbon tab is going to customize because I’m now in a group I’ll see buttons that allow me to access the shared calendar that’s part of my group experience it will open its own separate window so we’re seeing all the calendar events that are specific to my market project team the group that I have selected I also have a doorway to the shared files that are available through or complement some SharePoint online and when I click on this it will actually take me to my SharePoint site associated with my group and into the files and folders that this particular group has in common and this will of course take me online now the other option I have is to get to my OneNote notebook that’s part of my group experience this will take me to OneNote online so this is the online version of the OneNote application and I haven’t yet put any content in my notebook so it’s empty and last but not least the other doorway I have is to the group settings that you’ll see here these allow me to go in and add members to my group edit my group settings and again really decide how I will get notifications about the group now is there a way to discover new groups while you’re inside Outlook desktop there is I’m going to go back to my inbox and up to my home ribbon Tab and come over to the far right hand side to the ellipses we can’t escape it right from the ellipses you’ll see that there is a browse groups option this is going to take me to groups inside my organization that I might or already be part of or are again public groups where I could either request to join these could also be private groups I need to say or I can just automatically join them so for example if I want to join the All company group I can click on join and it will automatically add me to the group if there’s a group that I need to request before I can join it I will have to again type a little message but again we’re seeing that you can access all great utilities of groups for the most part from Outlook desktop if you’d like to use this as your Doorway to get to them but again everything is really happening because of office 365. so please go in and try accessing groups creating some groups of your own there are great collaboration tool hey everyone welcome back now part of your Microsoft 365 account is called your Office 365 profile or Microsoft 365 profile with your profile Microsoft keeps track of where you go files that you work on even people that you work with inside your organization now this might sound scary but it’s not they use an application called Dell to help you manage this information and it’s really made to help you discover and organize the info the other thing to know is that delve is never going to change any permissions you’ll only see documents that you already have access to and other people will never see your private documents now how do we access the delve or the Microsoft 365 profile inside of office 365. well from my home page I’m going to come to the top right hand corner to my picture or initials and click and down here I’ll see a hyperlink that will give me access to my office profile when I click on this it’s going to take me to an application called Dell now the screen that I’m on right now is all about the person I’m playing who is Megan Bowen so we’re gonna see that it shows us her email address her contact information and if I’d like to update any of this content I can click right here on update profile and it will take me in so that I can see the different information that Megan’s provided and if I want to add to it I can keep in mind that depending on the info that you provide some of it might be discoverable to your co-workers now if I’m done updating this information I can come right here and click back on my name and it will take me back to the main me screen from here I’m going to see great information like recent documents I’ve worked on and also below people that I’ve recently worked with and you’ll also see here that if I hover over one of these people and click it will actually take me to an informational page about that person so delve is also about helping me find people that I work with and contact them it’s not about surfacing anything I don’t have permission to see now there’s one more view in delve called the home screen when I go to my home screen I’m going to see recent documents that co-workers have worked on they’re going to appear on little cards that are called content cards and the idea is that it tells me the type of file when it was last updated and also where it’s stored you’re going to see that at the bottom of these files I have options to add these files to my favorites over here on the left you’ll see my favorites view if it’s something that I would like to go back in and work on later also you’ll see here that I can actually create my own cards through boards and if I see a file that I would like for example to send a link to someone too it gives me that ability if there’s something here that I would like to open I can actually come to the file name click on the file and in this case using powerpoint online the file is going to open up it will only let me open files that I have permission to open when I’m done viewing the file I can click on the X and the file will close so delve is all about helping me to manage my information within Microsoft 365 and also discover other people and files that other co-workers might be working on as well hi everyone I want to show you how to access the delve application from your Office 365 home page so I have several different options number one I can come up to the search bar and type in delve there or I can go over to my app launcher and I can come down to all apps and it will of course be in my list if it’s an app that I’m going to access a lot I can always of course make sure that it’s pinned to my launcher which it is when Delph opens it’s going to open in its own browser tab when I come in I will always start on my home screen this is where I’ll see content cards showing popular documents that co-workers have recently worked on and one thing I want to mention if you’re ever feeling nervous that delve is going to surface content that doesn’t belong to you or you don’t want people to see right down here they actually have a little article telling you about how delve works this is just to help reiterate that yes your documents are safe inside of delve delve will never change permissions for your documents and only you can see your private documents in delve and also your files aren’t actually stored in Dell delve is just the tool to help you access the files I’m going to go ahead and close that because one of the things I can also do through delve is discover files that might be helpful to me I’m going to come here to the top left hand corner and do a search and this could be for any topic that someone that I’ve worked with or that I might be working on and notice it’s even making suggestions as I’m typing it in if I come down and ask Dell to show all its results I’m going to see that it’s showing me both people that may have worked with the Northwind project it’s also showing me documents and if I keep scrolling down I can see it’s all kinds of files with any of these files I can come in and bookmark the file to add it to my favorites I can also come up and hover over a person and when I click on their profile picture it will actually take me to their profile page inside of delve so delve is a great way for me to not only discover files but also people and any of those files that I favorite I can actually come right here and click on favorites and it will take me in and show me those files that I’ve favorited and I’m never going to see a file that I don’t have permission to see and access this is also going to tell me where the file is stored and if I want to open it all I have to do is just click on the file’s name and using the online version of the application it’s going to open up so delve is not about again discovering anything that you shouldn’t see it’s about discovering things that you should see and again locating people who might be subject matter experts that can help you get things accomplished more quickly and again when I’m finished I can close the file and I can even close delve and go back to my office 365 homepage if your organization does use the delve application go in and try playing with it and see what you can Discover it can be really exciting hey everyone learning about SharePoint online would not work if you don’t understand another application that is part of your Microsoft 365 account called OneDrive for business it’s also sometimes called OneDrive for work or school so what is OneDrive OneDrive is really the cloud storage that is part of your Office 365 account just for you it lets you store and protect your files and share them with others and get them from any device when you use OneDrive for school or work it’s associated with your school or work email now it’s important to know that with Microsoft 365 you can get over one terabyte of space for storing your files if your OneDrive library is hosted on a SharePoint server then your organization’s administrators determine how much space you have but for many of us we have a terabyte of space I like to tell people OneDrive for business is like having your own personal filing cabinet where you go it goes because it’s stored in the cloud so how do we access OneDrive for business from our Office 365 home page well I of course can come right here and I can search for OneDrive we’re already going to see that OneDrive is represented by a blue cloud which stands for cloud storage I can also come over to my app launcher and I’ll see OneDrive there as well for me OneDrive is really the heart of your Microsoft 365 account because this is where you store your stuff it’s the most personalized part of the platform when I come into my Microsoft 365 application you’re going to see that it opens in a browser Tab and a few common interface settings is that you’ll see a command bar at the top also on the left you’re going to see a navigation pane the default view in OneDrive for business is called my files this is exactly what we’re seeing here we’re seeing my files for work or school that are stored right here inside of this cloud storage you’re also going to see access to recent files that you’ve worked on files that you may have shared with a co-worker or have been shared with you and a recycle bin now it’s also not uncommon under this to have other SharePoint document libraries that you also have permission to access again these may not be turned on in your organization but when you come into OneDrive for business if you see additional areas below your recycle bin it’s just because your organization also uses SharePoint and it’s giving you again a way to get to your SharePoint sites from inside OneDrive for business now as always we’d love to have you try OneDrive for business out yourself so go to your organizational Office 365 Microsoft 365 home page and try finding OneDrive and accessing it hey welcome back everybody we’ve been looking at OneDrive for business as we get ready to explore SharePoint online now I’m currently in my OneDrive for business account this is a OneDrive for work account and I’m seeing the different files that are again stored here one of the great things you can do is manage your files from your OneDrive and we’re going to spend a little bit of time doing that so up in the command bar I’m going to see options to help me manage content one of them is that I can create new folders and files using office 365. I’m going to create a new folder I can name it and then I can take my files and store them inside the folder now one of the ways I can do this is to drag and drop the applicable files in I don’t want to click on the file name because it will open it’s a hyperlink instead I’m going to come to the left hand side and you’ll see that I get a circle with a white check mark inside of it this is my way of selecting these files without actually having them open once they’re selected I can hover over any of the file names hold down my left Mouse button and drag the files up over the top of the new folder I’ve created release my left Mouse button and it will move the files into that folder you can see here in the top right hand corner it’s telling me that’s what I’ve just done to open the folder up I can click and I’ll see the folder open and the files inside of it so we can actually organize content using our OneDrive for business web application to go back out of the folder I’m just going to come at the top and click on my files because that’s the view I’m in now what about bringing content that’s stored locally on my hard drive or a network drive into my OneDrive for this I’m going to use my upload button with my upload button I can upload files and folders one warning with folders if they’re really large you’ll be using upload speed which can really slow down your internet speed so I would suggest uploading large folders when your computer is not busy doing things like attending a training or a meeting we’re going to click on files and come in and I’m going to locate the files that I’d like to upload I have a couple of PowerPoint presentations I’m going to use my shift key to select three of them and then click on open here in the top right hand corner we’re going to see it’s telling me it’s uploading three files into that again into my OneDrive when I upload I am copying them so the originals will still be back on my computer’s hard drive so at best practice would probably be to either delete those files or archive them so I always make sure I’m not getting confused at which ones I’m working with now the other thing that some people will do is synchronize their OneDrive files synchronizing can be important if you don’t want to have to come to this site to be able to access your OneDrive files it actually allows you after we’ve synchronized to access your files from your file explorer you only have to synchronize once on the device that you want to access them from it takes a few moments you’re seeing me go through the process right now and it may ask you to type in your password but what it’s going to do is actually take these files and make it so I can access them from my own file explorer in my computer and it can save a great deal of time the first time you do it like I said it takes a few moments but once you’re synchronized it can save time when I’m done synchronizing Office 365 will tell me that I’m finished it even waves goodbye then to access these synchronized files I’m going to actually go into my file explorer when I open up file explorer what I’m going to see is a new directory over here on the left in my folder pane I now see it says OneDrive Dash contoso it will be the name of your school or your organization that you work for and what’s exciting is the files that we were just looking at through the OneDrive web application I can now see all those files and folders right here from my file explorer if I want to open one of the files up all I have to do is double click on it the other exciting thing that happens is rather than opening in word online for example the files will default to open in the desktop client the auto save will be turned on because again the file is actually stored online in OneDrive for business but this allows me The Best of Both Worlds cloud storage and also the ability to utilize my desktop applications if for any reason I do make some changes to the file I’ll see that it will automatically start Auto saving to my OneDrive because again it’s open from cloud storage and when I’m done all I have to do is close the file without having to worry about saving so synchronizing is a really powerful way to access OneDrive files without actually having to be in your OneDrive for business web application hey everybody back in OneDrive for business I want to show you how to quickly and easily share a file with a co-worker to share a file from the OneDrive for business web application which I have open I need to select the file so I’m going to come to the left hand side I have a PowerPoint presentation that I want to share with a co-worker there are multiple ways to share but up in the command bar you’ll see a share button also if you come to the ellipses next to the file’s name you’ll have another option to share now remember sharing is not like emailing a file that’s attached through email because when we email file attachments it recreates a copy of the file once that person downloads it to open it when I share a file through OneDrive I’m giving my co-worker or the person I’m sharing the file with a link to the file it’s not creating copies of it up here notice I have to decide the type of link and a lot of organizations the only kind of link you can create is one that’s internal to your org that means only people inside your company or school could open that file up down here another exciting option is that you can allow people to edit your file or by unchecking this box you can make it so they can’t edit the file you can also turn on the ability to block downloading the file after I set those settings I need to type in the name of the person I’m sharing the file with this is a co-worker so I’m accessing their name through my company address list also the strikethrough on the pencil means that it will be a view only link that I’m providing to them I can also type a message because they’re going to get an email and in that email they’ll get a link to my file and then I’m going to click on send after the file has been shared we’re going to see that in my OneDrive one thing that changes and I’m refreshing it just so you can see this is that when we look at the file name rather than saying private it will say shared and that’s because any file in your OneDrive you own that file as an employee or student of your school when you share the file you still own the file but you’re giving a co-worker or fellow student access to it another place you can go to see files that you’ve shared or have been shared with you is the shared view over in your navigation pane when you come here there are two tabs the first one is shared with you these are files that you do not own co-workers or fellow students own but they’ve given you permission to access their files either through an editable link or a view only link shared by you these are the files that you own and we’re seeing that PowerPoint that I just shared right here in this list and this again is letting me see a list of all the files that I’ve either given co-workers permission to add edit or View and this is what makes again OneDrive for business such a great platform because not only can you store your work files and school files but you can also give co-workers and fellow students access to them so open OneDrive for business up in your own OneDrive for business account through Microsoft 365 and try sharing a file with a co-worker hey everyone with all the different parts of Microsoft 365 that we’ve explored we’re finally ready to actually explore SharePoint so from my Microsoft 365 home page I’m going to come up to the search bar and type in SharePoint now it’s important to know that the version of SharePoint we’re using here is SharePoint online as we’ve already managed and remember SharePoint online is a cloud-based service that helps your organization to share manage content knowledge and applications and it’s in my opinion the most powerful application that is in the Microsoft 365 ecosystem now as I come to SharePoint we’re going to see that I’m still in Office 365 so I can see the app launcher it’s very common to see the name of your organization in the top left-hand corner and also that I’m now inside of SharePoint and if I look at my search bar I’m going to see here that it also tells me that I’m in SharePoint now this area that I’m in right now is called the SharePoint start page instead of seeing a specific SharePoint site what I’m seeing are content cards that allow me to see different news updates or sites that are part of my organization it’s a great way to explore what kinds of sites your organization has when you first start using SharePoint each of these cards represents a different site and I’d never see a SharePoint site here that I don’t have permission to access to go into a specific site all I do is click on the card and that specific site will open some additional features that you have here are the ability to go to the top right hand corner of a frequent site click on the star and this will favorite that site and add it to the list of sites that you are following so I can actually use this as a way to create my own list of common sites and make it very easy for me to access them by coming to this followed list additionally another thing I can do from this SharePoint start page is a search if I come up here and do a search and it can be for people it can be for Content it can be for anything it’s a very very Global search because not only am I searching through SharePoint I’m searching through my OneDrive I’m searching through anything that’s stored within my Microsoft 365 account when I type in the word up here and I come to the results page you’re going to see that they are pre-filtered there’s an all Tab and then a tab that shows me any files any SharePoint sites that have that word with them any people that have been associated with that word any news feeds or updates any images that have that word inside of them on text and any power bi reports are dashboards this is one of the most powerful searches inside of Microsoft 365. when I come to files for example I can further refine my search results by picking a specific file type applying that and even going further by picking seeing files that have been recently modified if I want to open one of these files I can click on it and it’s going to open up right for me using whatever online application is applicable in this case word online so doing a search from the SharePoint start page is very powerful to get back all I’m going to do is come right here and click on SharePoint and it will take me back to my SharePoint start page welcome back everyone I’m ready to actually go to a SharePoint site and explore it so up on my search bar I’m just going to type in SharePoint this will take me to the SharePoint platform and to my SharePoint start page from here I’m going to see any sites that I frequently visit and also it’s not uncommon down here to even have my it Department suggest sites I might want to access now I have a few sites that I’ve favorited up here at the top to access one of them I’m going to click on it and that site will open up and again the same browser tab as my SharePoint start page I’m now on a SharePoint site this is what we call a SharePoint team site now a couple of common features that you’ll see in a SharePoint site we’re still inside of Office 365 so I see the app launcher also notice right now the search bar tells me that if I do a search it will default to just search the site that I’m in SharePoint is really good with keeping up with where you are and searching that area finally in the top right hand corner I’m going to see who I’m logged in as and then below that we’re going to see some additional important information this is a public group so it’s what we call a public SharePoint site which means other people in my organization can Discover it and request to become members of the site I’m also seeing how many members there are for this SharePoint site which is something that we’ll Explore More in some future lessons if you come over I’m going to see the title for the site and the letter T next to it it’s not uncommon in a SharePoint site for to have it attributed with a Microsoft team this just gives the team a website to go with their team also my navigation is on the left hand side and if I want to access any of the additional parts of this site I can click and it will actually take me to that particular area of my site I’ve just gone into the documents area of this site which is a document Library I’ll also see that there’s a recycle bin this allows me to delete content and then access it a lot like your deleted items folder inside of excel so when you click on the recycle bin that’s sort would take you to any of those deleted items this particular site doesn’t have any right now but if I deleted something I would see it there what we’re seeing with a SharePoint site is that it’s just like navigating in any website we’re just doing it in a website that’s specific to our organization to go back to the top of my site I’m just going to come up and actually click on the logo for the site and I’ll go back to the top of my SharePoint site so again we’d love to have you try this out in your own organization go to Office 365 access SharePoint and explore some of the different SharePoint sites that you have permission to access in your organization hey everyone thanks so much for joining us in this first module of our SharePoint online series we have spent time exploring office 365. we’ve spent time accessing the different applications that are part of our Office 365 account and even spending time looking at how we can customize the app launcher we’ve also spent time looking at the OneDrive for business web application and also delve and again we’re seeing that with Microsoft 365 you have an entire ecosystem of applications that you can access from inside a web browser we finalized our journey by actually going to a SharePoint page and looking at how easy it is from the SharePoint start page to actually navigate two different sites that you have permission to access inside your organization and we spend a little bit of time exploring how easy it is to navigate a SharePoint site because really it’s just a website and now we’re seeing how powerful SharePoint online can be for helping organizations to bring users together and give them a platform where they can both customize and collaborate please join us for the next module where we’re going to actually learn how to build SharePoint sites hi everyone Welcome to our Microsoft SharePoint online module 2. whether you’re managing existing SharePoint sites or you’re getting ready to become a site owner this course will complement your current situation in this course we’re going to help you understand how existing sites can be managed we’re also going to look at how you can plan out your own new SharePoint sites we want to help you get familiar with SharePoint online terminology and also how you can create your own site navigation we’re going to be looking at creating subsites and even being able to delete and update site content after completing this module we want you to be able to understand site templates and also how you can use site collections to help you really create sites that are powerful we also want to look at how to update site navigation and even delete and restore sites now as always if there are any course files they will be below in the video description so join us for this course hey everyone welcome to SharePoint online now there is a lot of terminology associated with the SharePoint online platform and as we’re getting started exploring the platform in more detail I want to help you have this again common terminology available to you in our practice files you will find a PowerPoint that has several of these terms in it and I just want to share a few of them with you as we’re getting started one of them you’ll see is the second bullet on this slide it’s a communication site this is a really common type of SharePoint site that’s made to share information with large groups of people we’re actually going to build a SharePoint communication site during this module another really common element that we’ll see in SharePoint sites is called a library or a document Library it’s basically a file folder full of files but it can also have files inside of it the great thing about document libraries is they give a place for SharePoint users to store all the content that they need as they work together another really common element is called a SharePoint list I like to tell people that lists are like the spreadsheets of SharePoint online lists are anything that can normally be stored in a table so in rows or columns you can put into a list so lists can include everything from contacts to task lists to even lists of products now in addition to these terms you’re also going to learn about things like a site a site is a website in SharePoint online and anytime you go to a different page that’s called a site page so all of these terms are available in this PowerPoint in our practice files also you’re going to see a link to the Microsoft glossary list for all of SharePoint and it’s much more detailed but before I bore you with any more terms let’s actually get in and explore SharePoint some more hey everyone welcome back to SharePoint we want to spend some time getting familiar with some really common types of content in a SharePoint site so from my Office 365 home page I’m going to come up and actually search for the SharePoint application I’m going to click on it it will take me to my SharePoint start page from here I can go to any sites that I have permission to access inside of SharePoint I have a few sites to the left that I’ve followed and I’m going to select one of those sites this sales and marketing site is a site that’s been created for the sales and marketing department of my organization and I want to point out some really common pieces of content on this site that we’re going to learn to create during this module now first of all you’re going to see the title of the site up in the top left corner this helps me to know that I’m in the right place also every SharePoint site has a URL this is again the website address remember when you’re in SharePoint you are in a web-based platform but I’d have to be logged into my office or 365 account to access this site now on the left I’m going to have my navigation this is how I get to the different parts of my site and what I’d like to do is take you to a really common piece of content called a document Library when I click on documents it’s going to take me to a list of folders and files that this department has stored inside their SharePoint site this is great because it’s cloud storage notice it’s made up of folders and also all different kinds of files these files do not have to be Microsoft related but it allows everyone who is in this department to have a website for all their stuff I like to call it a walk-in closet for the group that uses the site another really common element that we’re going to see in SharePoint sites is called a SharePoint list for this I’m going to come over to my site navigation and go to product list this is an example of a SharePoint list with products here I’m going to see information that would normally be stored in a spreadsheet but here it’s just right inside of my SharePoint site you can see that it’s a list of products but everything is organized into rows and columns it’s a great way to give people who use the site quick access to the different products that this organization works with and depending on their permission they can also update this content which means everyone else can also get to it now a few other common elements in a SharePoint site notice in the top left hand corner we still see the app launcher so we’re still in Office 365 because this organization uses SharePoint online in conjunction with their office 365. also it tells me I’m in SharePoint and don’t forget the search bar at the top this is a great way to look for Content final thing to remember is that in the very top left you’re going to see the settings gear we’re going to use this a lot when we start to explore kind of the back side of our sites as a site owner this will give you access to allow you to update and edit the contents of your site so get into Office 365 navigate to a SharePoint site and start looking for some of these these common site elements so that you can get used to them and we’re going to start making some SharePoint sites hey everybody we’re ready to explore two of the most common types of SharePoint sites the first one is a communication site I actually have a communication site up on my shared screen right now now what exactly is a communication site in Microsoft 365 a communication site is a way to share news reports and status and other information in a visually compelling way a Communications site is really made to broadcast information to a broad audience usually a communication site only has a small set of members that contribute content but then that content is consumed by a much larger audience a lot of intranet sites for organizations are actually made into communication site when you create a communication site a Microsoft 365 group is not created so it’s a great way for again an organization to convey information let’s look at a couple of common things you’re going to see in a communication site when you come to this communication site we can see the title in the top left hand corner and again that we’re still in the Office 365 ecosystem with the app launcher and that it’s still part of the SharePoint platform my navigation is here along the top you’re also going to notice that if I come over to the right hand side I don’t see a list of members of this site because again this site is made to convey information it’s not as much made for collaboration it’s very common in communication sites as you scroll down to see things like news releases notice these allow me to get updates on the important things that have recently happened in this organization other common pieces of communication sites are going to be including links to things that I might need as an employee of this organization also if I scroll down a little bit I’m going to see it’s pretty common to have for example a calendar of things that are happening within my organization and also I’ll see here even an opportunity for example to meet with leadership through in this case a chat pane to find out about what’s going on and sometimes this will be hosted by platforms like Yammer but again the communication site is about sharing information it’s not about collaboration so go into your own organization’s SharePoint and see if you can find any communication site howdy everybody welcome back to SharePoint we want to explore a common type of SharePoint site called a team site now just a reminder to get to any of your SharePoint sites you can use your M365 home page I can either search for SharePoint here in my search bar or look for it over here in my navigation pane now once I find SharePoint I’m going to see different sites in my organization that I have permission to access here in the SharePoint start page I’ve actually favorited a couple of these sites and a few of these are what we call a team site I want to go into this team site called The Mark 8 project team now what exactly is the reason for a team site team sites allow you to connect you and your team together to share resources and content team sites are a great place to store and collaborate on files and even create and manage lists of information so we’re going to see some of these functionalities in this team site now a reminder we’re still in of course the M365 ecosystem I can see that because up here I have the app launcher the name of my organization and then of course a reminder that we’re still in the SharePoint online platform but under that I’m going to see the name of my site this particular site has been created for a project group inside the contoso electronics organization they’re going to use this site to help them get things done now a few common features in a team site are a left hand side navigation also when it comes to who can use this site if you go to the top right hand corner you’re going to see a list of team members when you click on this list you’re going to see that some of them are team owners and some of them are members but both a team owner and a team member have permission to edit content on this site at different levels this makes it really easy for me to come in and see who they are right here from the very top page of the site now what are some other common again functionalities in a team site over here on the left hand side in my site navigation we’re also going to see that it’s very common to have a recycle bin in a team site this is where deleted content goes right now my again recycle bin is empty but if I delete something it will be stored in my recycle bin it’s important to know what the retention policy is for the recycle bin in your organization so make sure you check with your it team on that fact another common functionality in a team site is a team calendar part of this is because often team sites are going to be regulated by an Office 365 group that is helping to manage the membership of your team this calendar will take me to exchange online and let me see a calendar that’s been created for my Mark 8 project team where I can actually have calendar events that have been created for the team in common another common element you’re going to see is a document Library team sites a really important part of what they do is to help the group of people using the site to manage the content there so here we’re actually seeing the different folders and files that this again cite have in common every member of the team site and owner has access and permission to use these files they can also co-author inside of them another common component in a team site is going to be a OneNote notebook when a team site is created for a group of people an empty OneNote notebook is created that can be accessed from the team site and here we’ll see it open up it’s empty right now and it opens in OneNote online but the idea is that this empty notebook is available for the team members to use from their site to put whatever kinds of information they would like and here we’re just viewing the notebook before it’s been used but it’s here part of the site ready for everyone to utilize and access very quickly from inside the again SharePoint site another common area that you’ll see inside of a team site as well are going to be planner apps now these planners are created again when the site is created this particular one when we open it up will open in planner this is of course a task management application that’s part of The Office 365 experience once you’re inside you’ll see that if there is a plan attributed to this group I can either create a new plan or I can actually go into a plan that might already be part of that SharePoint experience and this is what the plan looks like and think about it when a group of people are working together to get something done it’s very common for them to need to know who’s doing what and that’s exactly what the planner app helps them to keep track of from their SharePoint site so again we’re seeing that right from the SharePoint team site there are multiple tools allowing this group of people to come together collaborate on files communicate about tasks again and get stuff accomplished and that’s the main reason for a team hi everybody welcome back now if you’re ready to start creating some SharePoint online sites there’s some strategy that you want to go through before you begin that process when a site’s content is logically organized and easy to find it’s going to be easier to maintain and manage it also helps your site users to be more productive so as a site owner you need to plan out your site and there needs to be some strategy involved before you get started we’re going to explore a couple of sites and look at some of the different components that have been used in the site’s design to help make it easier for it to be maintained and also for users to be productive in the site right here we’re going to look at a site from the SharePoint starting page called The Landing this is actually the intranet site for this organization but it’s SharePoint online one of the things the designer of this particular site has done is put the navigation at the top across the very top now this is again a choice that can be made you’ll notice that in other sites the navigation will be along the left hand side like the sales and marketing site that’s been created for a sales and marketing department putting the navigation in an easy to see place will help your users be able to get to what they need more quickly other questions you should ask yourself as you create a site are what kinds of lists libraries or Pages you want to create libraries can be used to store documents and files lists can be used to track issues or tasks and pages are going to be the individual items within the site where you can display content you’ll see here that this particular site has a document library to help the members of the sales and marketing team to get to the files that they need to use another question to ask yourself is what kinds of apps you may want to include in your site apps help to support the users in the site and get things done apps do include document libraries and lists but they can also include things like news feeds to help keep users up to date with events that are happening inside an organization or department or even calendar events for upcoming events that might be occurring all of these are topics that you need to explore and decide the best placement for such elements within your site before it’s created remember with SharePoint online you will have what’s called a site collection which means the different pages that make up your site the document libraries the different applications all come together in a collection that is your SharePoint site hi everybody you are ready to create your first SharePoint site now keep in mind that to create a SharePoint site you have to have permission to do so in a lot of organizations normal users cannot create SharePoint sites and there is a request process that you need to go through and your site will be created for you a SharePoint admin or an M365 Global admin can give you the ability to create sites through permissioning now right now I’m on my SharePoint start page and in the top left hand corner I see two options one to create a site and one to create a News Post so in this particular company I do have permission to create SharePoint sites also please remember before you create your SharePoint site that you’ve planned the kind of content and the type of site that you need so I’m going to click on create site on the right hand side a panel opens up asking me the type of site I want to create now we’ve already explored these two again types of sites but just a quick review team sites are about a site that’s created for teams of people to collaborate together share files and basically get things done a communication site is a portal to share information make sure you pick the right one we’re going to do a team site now I need to name my site after my site’s named I’m also going to see that underneath it’s creating an Office 365 group and also a calendar this group and calendar are important because they’re going to help me manage calendar events and also communicate with the different users of my site using email the other thing that’s really critical here that’s created is your site URL this is something that cannot be changed very easily after the site is created your site name can always be updated later on it’s always a good idea to tell people about what your site is going to be doing so I suggest filling in the site description even though it’s extra then the privacy settings this is where you select how your site will be advertised to other people inside your company if it’s private only members people that you invite can access your site if it’s public anyone in the organization can see the site and access it they won’t be able to change content but it will be viewable to others we’re going to keep it private because I want to be able to control who has access to my team site also a default language then I’m going to click on next now remember I picked a team site so at this point I need to start typing in the names of my co-workers who will be able to access this site as I type these co-workers names in they’re actually populating from my company address list or my active directory this makes it really easy for me to go in and quickly start creating the members of my site these are again the people who will be able to access and edit content on my site now notice as I’m typing these names in that underneath their names it’s telling me that they are a site member I can actually at this point before I’m even done creating the site allocate either my different site members to be owners or site members now I’m playing Megan right now we can see her picture in the top right hand corner but what I want you to remember is that because Megan’s creating the site she will also automatically be assigned the role of a site owner and in this case I’ve also selected Patty after the site’s made can I edit this list of site owners and members absolutely and it’s really easy to do I’m going to click on finish and voila my site will be made now at this point if I close the different panels that are opening up we can see my new training opportunities site it’s already up and running and I already also have six members including myself and Patty as owners and my site is already ready to rock and roll so if you can create sites go in and try create creating your own team site hey everyone when you have a new SharePoint site you may want to update the way it looks one of the ways that you can do this is to apply a site template now after your site’s created the site templates box will pop up but also you can access it on your own in your new site so here in my training opportunities team site that I just created I’d like to go ahead and apply one of the site templates to this site to do that I’m going to go to my site settings site settings are located in the top right hand corner of SharePoint online directly from your SharePoint site so they’re really easy to get to so I’m going to come up and click on this white gear located in the top right hand corner of my screen and when I do I’ll see a menu of different tools to help me manage my site about fourth from the bottom in the top menu I’ll see apply a site template when I click on this it will open up the site templates now remember this is for my entire site so if I select one of these templates it’s going to update all the content of my my site there aren’t a whole ton you’ll see that there are two tabs at the top one are templates that are provided by Microsoft these templates are built around different core capabilities like event planning project management retail management team store collaboration team collaboration training and development and training in courses now to select one of these you just click on it you’ll see a details button this will take you into where you get a little blurb helping to describe what the site does also a preview of what it looks like and then in the bottom right corner you can click on the purple use template button and it will actually update your site to this template now remember if you’ve already added content to your site the template will not delete anything but it will update the color and add new content to your site and you’ll see that they come with a lot of pre-built content including web Parts which we haven’t explored yet but we will that can save you a tremendous amount of time now after I use one template but if I’d like to try a different one I just go through those same steps go to the top right hand corner click on the settings gear come back down to apply site template the Box will pop open and now I can pick a different site template and apply it so you can actually go through and try a few different ones until you find one that which you feel is applicable do you have to use site templates absolutely not but one real benefit of site templates is they help to add a lot of content to your site very quickly and then you can go in and customize the different content that is here one last thing to mention about the site templates when we go up to again the settings gear and go back down to the site templates options is that when you’re in the site templates box there’s also a tab for from your organization these are going to include templates that your own organization has created for SharePoint sites this particular company hasn’t made any yet and it’s because they’re so new to SharePoint on line but this is something that eventually an organization might build out so again we want you to try this go into a SharePoint site that you’ve created and check out the site templates and try applying one of them to your site to look at all the great content and updates that it can make all right welcome back to SharePoint we need to talk about sub sites now in older versions of SharePoint it was very common to have a sub site which is basically a site within a site especially when you’re looking at SharePoint server 2010 2013 2016 2019 subsites were very popular for the overall layout of a site however with modern SharePoint in M365 we really want to steer clear of subsites one of the reasons is that if you already have subsites and you’re migrating to SharePoint online and M365 it makes the migration process a lot more difficult what SharePoint online recommends instead is that you try to keep the architecture of your site flat instead of using subsites we want you to utilize team sites communication sites and what’s called a hub site to help keep the structure of your SharePoint site very flat now that being said if you need a subsite you can still do that so for example in my training opportunities site I’m a site owner so I can create sub sites also I need to create a subsite for a specific group of people who would like to manage content separately but within this site to do that I’m going to need to go into my site settings so to do that we’re going to come into the site and go to the top right hand corner to the settings gear and then I’m going to access an area called site contents now site contents is a great place to go to really see all the pages document libraries and different apps that are part of your site you’ll see when I come in that I’m looking at a list of the different components that make up my new SharePoint team site at the top there is a new button this new button will let me do things like add lists Pages document libraries apps and yes the unmatchinable the subsite we’re going to select subsite and when I do this I actually go into a view of SharePoint that’s a little bit different but this is where I can create my new sub site right here I’m going to go ahead and type in the name of this site notice I can include a description again the description’s arbitrary but it can help other people know what this site is for the other thing that’s a little bit different here it’s more manual I need to add everything in of course I can copy and paste but I even need to make sure that I come in and type in the rest of the URL I’m going to pick the language that my site will be in Additionally the template it’s based on notice here it can be a team site with no M365 group or it can be a team site based on having again an M365 group associated with it and then down below is it going to have the same permissions as the parent site and finally a create button so this will create my subsite for me so when it’s finished creating the site I will see that I’m no longer in the parent site but now I’ll be in my new sub site that I’ve made but again we’ve got to keep in mind that Microsoft does not really suggest doing subsites the other thing you’ll notice about this new site that it’s based on the classic experience because I based it on the classic template when I create created it so subsites are something you can do but we don’t recommend it all right everyone we need to take a minute and talk about SharePoint online URLs now just like a doctor has to know the anatomy of a body with a SharePoint site you’ve got to understand the makeup of your website address or your url now if we come up here in this site I’m in the sales and marketing team site of this organization I’m in a Microsoft environment so the URL is a little bit weird but we can still refer to it to help us understand the anatomy of a SharePoint site the first thing you’re going to notice is that it’s an https site this lets us know that it’s a modern site and it’s going to need the latest version of most browsers to run the next thing I’m going to see is the company name for me this is the m365x17718-452 it’s quite the number but normally this would be your company name and also this is the URL of your tenant now the next thing I’m going to see is I go over to the right it’s going to tell me that I’m in and SharePoint you’ll see that it says sharepointon.com this lets me know that I’m using SharePoint online some companies use SharePoint but not M365 this organization uses both the next thing I’m going to see is that I’m in a site this means that I’m in one of the sites that is part of this company’s collection of SharePoint sites then I finally see my site name which is sales and marketing now within that site if I come in and go for example to a document Library which I’m going to do what we’re going to notice is that my SharePoint online URL gets additional information at the end I’m still in the sales and marketing site but if I keep going over to the right we’ll see that it’s telling me I’m in shared documents this is letting me know that I’m in a document Library which I am if I go for example to a SharePoint list within that site again we’re going to see that now I’m still in the sales and marketing site but I’m looking at a list and specifically the product list so these SharePoint online site URLs give us a lot of information about where we are in the site the company that we’re in and also the SharePoint platform that we’re using and if you explore them you get pretty familiar with again what they tell you about where you are in your SharePoint ecosystem within your organization hey everybody welcome back in 2016 Microsoft introduced the modern SharePoint online experience previous to this time a lot of companies were using what they call SharePoint online classic now the modern experience was designed to be more compelling flexible and even available on mobile devices easier to use it was available in SharePoint online and also SharePoint server 2019 with some limitations but there are still organizations that are using the classic experience on my screen right now you’re seeing a document Library as viewed in the classic experience some of the biggest differences are that in the classic experience things are a little bit more tricky to edit and also the experience has a few functionalities that the modern experience doesn’t for example the modern experience doesn’t include some of the column types and customizations that you can make in the modern experience now if you view a modern document Library we’re going to see that it looks more like what we’re used to seeing in a SharePoint site things are easier to drag and drop and it’s also going to be an experience that’s a lot easier for users to come in and automatically start utilizing with the classic experience it required a little bit more time to get up to speed with how to make the sites work it’s not uncommon for some organizations to have some sites that continue to have the classic experience and then other sites that are already migrated to the modern experience become familiar so that you can know how to utilize both but count on for the most part sites being migrated to the modern SharePoint online experience because again with the modern online experience you’re going to have views document libraries and also lists that are optimized to make it really easy to pin filter and also sort which the classic experience it was a little bit more difficult hey SharePoint welcome back we want to talk about site collections now in previous versions of SharePoint like 2013 2016 2019 where SharePoint server was involved the architecture of a SharePoint site was to be a site collection now site collection was a group of websites that had the same owner and same administrative settings so that would mean things like permissions and quotas were all the same site collections were created in a web application like SharePoint and they would have a top level site that was automatically created and then all the other sites would be called sub sites well as we’ve already talked about we’re trying to get away from subsites in SharePoint online instead what Microsoft is recommending when you have a group of sites that are in common and managed by the same group or individual then is set up a site collection you create what’s called a hub site so our Hub site’s the new site collection no because they’re two different things but they accomplish publish a similar thing so what exactly is a hub site a hub site is where you unify your SharePoint site with common branding common navigation and everything can roll up into a centralized display also hubs help to enhance content Discovery by tying sites together with easy browsing so I want to actually take you to a hub site so you can see what it looks like I’m going to come over here and go to my Global sales site this is a site that I go to once in a while and it is a hub site so first of all how do I know I’m in a hub site notice right below again my SharePoint bar at the top that includes my search bar I see an additional navigation bar this is again an indicator that you’re probably in a hub site this is the global sales Hub site you’ll see to the right that it gives me navigation to sites that are all common to each other another element of a hub site is when you go to one of the sites that’s part of the Hub they all have the same branding this can include again the navigation bar at the top and then also the same theme so when I go to any of the sites that are part of the Hub I’m going to see that they all have a very similar look so that I know that I’m still in the hub experience even though I’m navigating to different sites within the Hub and again it’s very easy for me to go to the different sites of the Hub and then when I get to a different site like when I go back to my sales and marketing site again I’ll see that in addition to my navigation for the Hub at the top this site has its own internal navigation that will allow me to go to the different parts of the site but I can always get back out to the hub by coming to the top and again all of the sites within the Hub have the same theme and branding so that I know that I’m still within that Hub experience so this is kind of the next phase getting away from site Collections and again this is also part of the idea that we want to keep our SharePoint sites very flat and avoid doing site collections that include a lot of sub sites because it makes it a lot harder to manage and update content one more thing about Hub sites a hub site needs to be created for you buy one of your SharePoint admins or a global m a global admin in M365 so keep that in mind if you need a hub site and you want to assign some sites to it you’ll probably need to ask your SharePoint admin to enable The Hub site for you hey everyone we have explored a tool called a hub site which is a way to connect certain sites with common navigation and branding to make it really easy for users to navigate between them but now what we want to do is look at how you can manage Hub sites on your own especially if you’re a site owner so in my environment I’m playing Megan by the way I have a new site that was recently created to help manage sales for the Us sales team but they also use several other sites in common with other groups in their organization now currently these sites are all organized into a hub site called Global sales let’s take a look at it we’re going to see here how at the top you have the common horizontal navigation representing the Hub site and all the sites that are included in the hub site collection and notice when I click on any of them they still keep that hubsite navigation at the top and then they have the same theme to help me know that they’re all part of the hubsite experience but my U.S sales site that’s new is not currently part of that experience so I want to get it added so it’s going to make it easier for my users to get between those different sites when I go to my Us sales site right now it’s a standalone site so how do I get it added to that Hub well you have to be a site owner and you also have to have permission to do so if you’re not a site owner or you don’t have permission to do this ask your SharePoint admin they can set your site up to make it part of a hub site I have permission to do this so from my Us sales site I’m going to come in and go to my site settings gear we’ve spent a lot of time here hopefully you’re getting the idea of how many important options there are under this menu then I’m going to come down to site information now this is going to take me in and let me see things like the title of my site also the privacy settings and more importantly what we’re looking for is Hub site Association right now it says None So to allow me to associate this with a hub site I’d have to have permission to do so which I do and I need to know know the name of the Hub site for me it’s Global sales I’m going to select that and then I’m going to click on Save now one warning here sometimes when you set up a hubsite Association you will not see the Hub site Association come up as quickly as you want this is something that we tell people sometimes takes a little while to bake because there can be many sites that are being associated with a hub so when you first do this if you notice it doesn’t quite take effect as quickly as mine did it’s okay refresh the site maybe log in and out a couple of times it can take several hours for the hubsite association to connect but in our case it happened really quickly so it’s nice we’re gonna see again now the USL site has that common site navigation at the top and the same branding as the other sites so we’re moving a step forward and helping make it easier for those that use the Us sales site to also use the other sites that are part of the Hub site as always we want you to try this out so if you do use SharePoint go and look for some Hub sites in your own organization hey welcome back SharePoint fans here we are talking about Hub sites now this USL site that you see on my screen right now I recently added to the global sales Hub site collection we can see it here but there is one critical issue currently the U.S sales site is not part of the Hub site collection navigation so I need to take this USL site and add it to the global sales Hub site again I have to be a site owner of the Hub site for me to be able to do this Megan happens to be but if you are not request it from your SharePoint admin or the site owner of the Hub site now first of all I’m going to go up and take a look at the URL for my U.S sales site I’m going to copy it because I’ll need this URL when I go in to actually add it to the hubsite navigation quick ways to copy select it do control C right click and copy any of those are going to work they’ll all get that URL on your clipboard now I’m going to navigate to the hub site I’m going to do that by coming to the far left side where it says Global sales this will take me to the top of the site now from here if I am a site owner of this Hub site I will see that on the navigation bar I have an edit button on the far right hand side of the site navigation and keep in mind this is not just within this site this is connecting these sites together I’m going to edit this now you’ll see what’s interesting is that the editing is not horizontal it turns it vertically but once I’m done editing then it will be horizontal now I want to add that site to the site navigation so I’m going to come to the bottom of the current edit Hub navigation and I’ll see this little plus sign in a circle this is of course where I can add new content to the navigation bar at the top I need to type or choose what it is that I’m adding I’m going to be adding a link and then in the address bar I’m going to paste in the address of my US Cell Site I need to replace the HTTP so make sure you delete it out and then paste your url over the top I also need to include text to be the link in the actual navigation bar so I’m going to type in the name of the site then I’ll click on ok now I’m done I can see it here if I would like to move it further up I can either left drag it or I can come in and click on this ellipses on the right hand side and say move up or move down and of course this is the order that the sites will appear in from over from the left to the right I’m going to click on Save now I see if I look up here and I refresh my U.S sales is here now it didn’t quite move it over enough so I’m going to come back in again and say move up a couple of times because I thought I did but it looks like the change I made didn’t save so we’ll move it up with the move up button and then I’ll save that now it’s updated if I click on Us sales it takes me to the USL site which has the same branding and also that common navigation at the top and if I go to any of the other sites the users that use those sites can in turn get back to the Us sales site notice the navigation isn’t quite updating yet and that’s just because it takes a little bit of time for everything to connect but if I refresh those other sites once I go to them eventually the site navigation will be the same on all of them which puts us sales here in the middle so again try out some Hub sites see what they’re like play with them because again this is the updated way to do a site collection inside of SharePoint online hey everybody I want to be able to update some of the different facets of my site starting with the site navigation do I really want this navigation bar over here at the left hand side of my team site do I even want it on these are some of the questions you can ask when you start updating the look of a SharePoint site so where can I go to quickly make some of these changes well a great doorway is of course site settings so I’m going to go to the top right hand corner to the white gear and Microsoft is done a great job at putting some of these overall site navigation and look tools right here in this menu if you come down to the bottom we have an option that says change the look now this will give me three different primary areas that I can update in my site we want to start with the bottom one which is navigation how are people accessing content on my site now first of all I can turn my site navigation off completely notice right here I can say off save it and now my site has no left hand side navigation and sometimes people will do this because they want to keep the navigation within the content of the site if we go back to site settings again and come back down to change the look at the very bottom this time when I look at navigation I’m going to turn the navigation back on but I’m going to change the orientation to being horizontal now when I do this I get a few different styles of menus that I can pick from but these mostly work with again when you have drop downs within drop downs which I don’t but notice what’s happened now my navigation is along the top now are there benefits to this absolutely if my navigations along the top this might be something that the people I work with are more comfortable using they’re used to seeing the navigation up there so that’s where I’m going to keep the site navigation but remember you can always go in under change the look in site settings and you can again very quickly update where your site navigation is either Horizon horizontal or down the left hand side try it out in your own sights alright I want to update my site navigation a little bit more and just a reminder that to do many of these things that we’re talking about with updating the look of a site you need to be a site owner and how can you tell if you’re a site owner because you’ve heard me say that quite a bit you need to go in your team site because that’s what we’re looking at here to your site membership I’m going to come to the top right hand corner to where I see a list of everyone who’s either a site member or a site owner when I click on this menu I’m going to see all the different site owners and members and as I look through this menu I’m looking for myself I’m playing Megan and as I look through this list I can see Megan and under her name it tells me she is a site owner so this is important because sometimes you may go into a SharePoint site and try to do different things and it won’t allow you it’s because of your permissions in the site so we’ve ascertained that Megan’s a site owner and she wants to edit again her navigation bar first of all we’re going to come to the bottom of the navigation bar this is really easy to find there’s an edit button this will unlock the site navigation so that I can make changes to it notice how each item has an ellipses on the right hand side hopefully you know what these are for right when you click on them it gives you additional options to manage that specific item for me the first thing I want to do is remove the OneNote that’s associated with this site when I click on the ellipses towards the bottom of the menu I’ll see a remove option this does not delete the OneNote from my site it just removes the link to it from the navigation also you’ll see here that I can click on the ellipses and use it to move items up in the site navigation and sometimes the things are at the top it’s easier for people to find finally when I come to my site navigation I want to go to the documents area and I’d like to edit that content first of all we’re seeing that it’s a link in the site navigation and we’re seeing the URL to the site I just want to update the name rather than saying documents I’m going to update it to be team files because this is what my team refers to when they’re dealing with these again document storage for this site we can see how it’s been updated I’ll click on Save and now I’ll see that the navigation bar is back ready to be used and for example the updated team file still takes me to my site’s document Library it hasn’t changed any of the navigation it’s just again allowing me to personalize it to the people who use my site as always we want you to try this out so if you’re a site owner go into your site try modifying your site hi everyone what if I want to take my SharePoint site and really update the way it looks things like the color the logo you know give it a little bit more Pizzazz for that I need to go again to my site settings so from the site I’m going to come up to the white gear in the top right hand corner click on it and come down to change the look under change the look this time we’re going to head to the top to theme think of PowerPoints when you do this these are the different themes or color palettes that you can apply inside of a SharePoint site and as you click on them you can actually preview them this is also a place in some organizations where the organization will actually create branded themed colors so you come to this area and you might see some of them are very different but remember it’s what looks good according to your site and also company branding once I’m done picking my updated look I will click on OK or save I should say at the bottom and we’ll see that the new theme will be applied to the site keep in mind sometimes if someone goes to the site and they haven’t refreshed it they may not see the new theme applied so make sure people refresh the site and then we’ll see the updated theme inside the sites hey everybody welcome back to SharePoint nothing really recognizes a site more than its header so what is the header of a SharePoint site it’s the area at the top of your site that’s recognizable to the site and page it is below the SharePoint taskbar at the top but you’ll notice it has a logo it has a title and other important information to help me understand the site we want this to be branded we want it to be visually appealing so how can we help update the logo of our SharePoint site we’re going to head back to site settings click on the gear and come down to change the look this time we’re going to head into the header portion now in the header there are four different layouts minimal which is very thin compact which is a little bit taller standard and finally extended now you’ll see that for example extended is quite tall and takes up a lot of room vertically on my site if I want my site to not be scrolling forever I might want to go with the compact look it’s a little bit thinner doesn’t take up as much room at the top of the page now under the layouts I’ve got based on the theme that I’ve picked for my site the ability to customize the color applied at the top you want this again to pop so it’s usually better to pick a darker themed color now below that you can actually turn your site title off maybe you only want to see the theme and notice this just takes the title off now speaking of title on every SharePoint page you’ll see that next to the title there is a logo if you don’t provide a logo what does Microsoft do they will take the first letter of the first two words of your site name and those become your logo a little bit awkward but the good news is you can change it so as I come down it’s going to ask me for two different logos one is a thumbnail and one is a site logo the thumbnail is to represent your site when people search for it could you have two different logos here yes but I recommend doing the same one for consistency when people see that logo you want them to recognize that it’s your site so I’m going to click on change I have already downloaded my logo locally to my computer you can’t go online and find logo so you’ve got to already have them locally downloaded so that’s why I’m going in for each one and selecting it and we’ll see it get added now final thing I can do here is click on Save because now that I’ve made that change I I want to be able to see that logo update in my site and that’s what we’re actually seeing so again what we did here is we went to change the look we went to header and then we came down and we updated all this information for the site and the value of this is now I have a custom header that when my users see this header in my site they’re going to recognize it and know that they’re on the right site as always we want you to try this out so if you’re a site owner go in and try updating the header of your own sites all right we’re back in SharePoint land in this site you’re going to see an example of a team site where the logo was created by Microsoft and SharePoint online so right here in the top left hand corner notice the the name of this team site is event planning and so to provide a logo for the site all they do is take the first letter of each of the words in the site name and that becomes your logo it works when you’re first creating the site but really having a customized logo makes your site look more professional so we want to look at one more place you can go to update the site logo again my logo I’ve already got locally stored on my network or computer so I can’t go online to look for one when I add it to the site now to access where you can update the logo there are two different places this time we’re going to go to the second one I’m gonna head back to the settings gear again and I am a site owner another reminder of that from here what I want to do is come down to site information now site information is where you can do things like associate Hub sites also customize your site description and update the title of your site remember if the site’s title is updated it does not change the url in this case at the very top you’re going to see a location where you can update and change your site logo so I’m going to click on change navigate to the folder where my updated logo is located and then I’ll click on Save and you’ll see that this will then replace the logo that was originally provided by Microsoft with this new logo that’s what I want so again different ways to do the same thing but having a customized logo really does help to better brand and make your site more recognizable all right guys sometimes it happens a SharePoint site runs its course it’s time for it to die or maybe sites get created and they’re redundant two people create a site that can do the same thing that’s a bad idea so one of them needs to go away we want to have as few sites as possible so again if you’ve got extras get rid of the hangnail sites to do that I need to be a site owner also I’ve already done this I’m going to click on my site settings gear now before you delete a site do you have permission to delete it and what’s going to happen to all the stuff in that site we’re talking about the documents the calendar events the OneNote notebooks sites are not just web pages there’s a lot of content there you need to remember before you delete something that you know what’s going to happen to all that additional stuff so what I’m going to do from here is come up to my site settings gear and go down to site information this is where we’re going to see things like the name of the site it’s description I’ll so it’s privacy settings but notice at the bottom above the save button I have a delete site option before you delete a site Microsoft SharePoint online is always going to remind you about what you’re doing notice it’s telling me this will delete all the resources including the site the files the conversations do you want that to happen it’s asking me to back that content up now in this organization there actually is a backup that’s going on behind the scenes but you don’t know that’s going to happen for sure in your organization so please be sure before you delete anything you make triple sure that stuff is backed up yes I’m going to delete all the associated resources and the group notice that’s what it’s telling me and that group refers to the Office 365 group that works in tandem with this site to help manage the calendar events the conversations kind of that Outlook portion that happens within a SharePoint site I’m going to click on delete and suddenly I don’t see the side anymore it takes me back to my SharePoint start page and if I were to try to do a search for that site I would see that it’s not there anymore I can’t find it because the site is literally gone so again it’s a great way to manage sites but we’ve got to be super careful when we do delete a site hi everyone we want to talk about something bad that can happen and that’s when you delete a SharePoint site and you don’t mean to as a site owner that’s something all of us can do is delete a site we don’t need anymore but what if you do it accidentally and then realize you need that SharePoint site back really makes you feel sick doesn’t it but it does happen and there’s no magic undo button in SharePoint however if you’re a SharePoint admin or a global Office 365 admin you can help there is something there that can help restore a deleted SharePoint site the first thing we need to do is get into the admin portal for Office 365 and again this isn’t something that everyone has access to but I want to show you the process just so that if you work in an organization that’s new to SharePoint online you can help them through this process so I’m in my M365 home page and over here on the left hand side you’re going to see again my my navigation bar I am an admin a global admin actually so I can access my Office 365 admin tools I’m going to click on admin it opens up a new browser Tab and takes me to my M365 admin Center now we got to realize how important SharePoint is to The Office 365 or M365 experience it’s one of the biggest platforms so right here if I expand this lower section of the navigation pane I’m going to see that in the admin portal there’s a section called admin centers and some of the applications which are really more platforms have their own separate admin section SharePoint happens to be that way so I’m going to click on SharePoint another browser tab opens taking me to my SharePoint admin center it’s based on the same interface so it has again the ability to expand and collapse the navigation bar I do suggest you keep it pretty wide open the first few times you use it one of the very first things you’ll see when you come in here is that for SharePoint I have sites I have active sites these are the sites that are currently being used in the organization and then I have deleted sites well I recently deleted that event planning site and if you recall I didn’t mean to so my SharePoint admin can come in select the site and notice up here there’s a restore button the other thing I want to call out is that currently we’ll see that sites are retained for 93 days so I have a 93 or a three month retention policy and then they’re permanently deleted if you click right here on learn more it will take you in and give you a more in-depth description of what’s happening so this just tells me that deleted SharePoint sites will be retained for 93 days after 93 days the site and all its content will be permanently deleted this will include libraries lists pages and any subsites so it’s pretty specific I’ve selected my site I’m going to click on restore notice this tells me this site is connected to an Office 365 group restoring the site will also restore the group which means that all that great email content will be available to me notice it’s no longer here under deleted sites if I come back into active sites scroll down and look for event planning it’s back where it was before so it’s not an undo button but you’re again SharePoint online admin can help save the day if you are within that retention policy welcome back everybody what if you are in a SharePoint site and someone makes a change to one of your site Pages or a document Library anything in a site and it’s not a change that you like what can you do well built into M365 and also your SharePoint sites you have a tool called version history every time a user goes into a site and makes a change or an update it saves those changes under that user as a version and you can actually go in and revert back to a previous version if someone’s made a change that you don’t approve of as a site owner I’m looking at my market project team and I recently made a change to this site by adding this different styled header at the top or this text with an image underneath I don’t like it I want to revert back to the way the site page looked before the change was made the first thing I need to do is access my site pages to do this I need to go into a place of SharePoint in my site called site contents it’s kind of like going to the basement or the utility room of your site and it’s a great way to see what kinds of content are within the site to do this we’re going to go back up to site settings we’re going to come down to site contents now in the site contents list I’m going to see that I have contents and subsites and the different elements of my site are listed here including site Pages this would show me the individual pages of my site now right here I have my home page this was the page that I updated and again changes were made to this page that I don’t like so next to the name of the page I’ll see a vertical ellipses we all know what that does I’m going to click on it and then I’m going to come down and go to version history every time someone has been in the site or I should say in the page it shows me the date and time and then also the user I’m the one who again updated the page and I do not approve of it so what I’m going to do is go back to Lynn’s version click on the ellipses or in this case the arrow next to the date and time that particular version was created I can view properties of that version restore it or delete it in my case what I want to do is restore it so I’m going to click on the restore button notice what it tells me I’m about to replace the current version with the selected version I’m going to click on ok now I’m in a 2.1 version I’m going to go ahead and close out and then I’m going to leave my site contents view by just clicking on my site logo that’ll take me to the top of my site I’m going to see that when I come to it it’s reverted back to the previous version which is different than the way the site looked before but this version history being Again part of your site pages is a really great way if changes are being made to know that you can always revert back to a previous one if something gets changed and you don’t like it so go into a site of your own and check out the version history in one of your site pages hey everyone thank you so much for joining us for this SharePoint online training we’ve covered a lot of territory everything with how to access SharePoint online from your Office 365 homepage to utilizing the SharePoint start page as a great way to follow sites that you access a lot and also navigate to different parts of your SharePoint platform we’ve even spent some time exploring different kinds of SharePoint sites team sites that allow groups of people to come together communicate and collaborate and communication sites that help us to share information we’ve also spent time using the site settings gear to get familiar with great tools like changing the look accessing our site information to help start making edits to our sites once they’re created we even spent some time deleting sites and looking at how a SharePoint admin could go in and restore that site as always we want you to join us for more courses in the future and thanks for being here for SharePoint online thanks for watching don’t forget we also offer live classes and office applications professional development and private training visit learnit.com for more details please remember to like And subscribe and let us know your thoughts in the comments thank you for choosing learn it [Music]

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • Microsoft Teams for Trainers: Conducting Effective Meetings

    Microsoft Teams for Trainers: Conducting Effective Meetings

    This source is a training module for using Microsoft Teams effectively as a trainer. It guides users through scheduling meetings, adjusting meeting options, and managing meetings within channels. The training covers utilizing meeting tools like chat, polls, breakout rooms, and screen sharing, including the Microsoft Whiteboard. Finally, it demonstrates how to access meeting recordings and attendance reports for post-meeting analysis.

    Microsoft Teams for Trainers Study Guide

    Quiz

    Answer the following questions in 2-3 sentences each.

    1. What are the three primary learning outcomes for trainers covered in this Microsoft Teams course?
    2. Explain the difference between scheduling a meeting from a standard channel versus a private channel in Microsoft Teams.
    3. Describe two options for managing who can bypass the lobby when setting up meeting options in Microsoft Teams.
    4. Why might a trainer want to set up breakout rooms before a Microsoft Teams meeting begins?
    5. What are two ways a trainer can share files with attendees before a scheduled Microsoft Teams meeting?
    6. Explain the purpose of conducting a test call before hosting a live Microsoft Teams training session.
    7. Name two host controls that a trainer can utilize during a Microsoft Teams meeting to manage participants.
    8. What is the keyboard shortcut attendees can use to raise or lower their hand in a Microsoft Teams meeting?
    9. Describe one of the presenter modes available when sharing your screen during a Microsoft Teams meeting.
    10. What information can a trainer access in the attendance report after a Microsoft Teams meeting concludes?

    Quiz Answer Key

    1. The three primary learning outcomes are to effectively schedule meetings and adjust meeting options beforehand, effectively host a meeting within a Teams channel to keep information in one place, and discover the use of meeting tools such as breakout rooms and sharing PowerPoints.
    2. Meetings can be scheduled directly from a standard channel, automatically populating the channel in the meeting details. In contrast, scheduling a meeting for members of a private channel requires going to the calendar and inviting those members individually, as direct scheduling from the private channel is not available.
    3. Two options for managing who can bypass the lobby are “People in my organization,” which allows authenticated users from the same organization to enter directly, and “Only me,” which requires everyone else to wait in the lobby until the host admits them.
    4. Setting up breakout rooms before a meeting allows the trainer to pre-assign participants to specific groups and configure room settings like time limits and presenters, making the process more efficient and less disruptive during the live session.
    5. A trainer can share files before a meeting by attaching them in the chat space associated with the scheduled meeting or by uploading them directly within the channel where the meeting is scheduled.
    6. Conducting a test call allows trainers to verify that their audio input (microphone) and output (speakers) are working correctly, as well as ensuring their video camera is functioning as expected, thus preventing technical issues at the start of the training session.
    7. Two host controls include the ability to mute all participants simultaneously to manage noise or discussion flow, and the option to individually turn off a participant’s microphone or camera if needed.
    8. Attendees can press the keyboard shortcut Ctrl + Shift + K to raise their hand to ask a question or get the trainer’s attention without interrupting the flow of the meeting, and they can use the same shortcut to lower their hand.
    9. One presenter mode is “Content only,” which focuses solely on the shared content. Another mode is “Standout,” which overlays the presenter’s video feed on top of the shared content, creating a more engaging presentation style.
    10. The attendance report provides information such as a list of all attendees, the times they joined and left the meeting, the duration of their attendance, and their role within the meeting (e.g., attendee, presenter).

    Essay Format Questions

    1. Discuss the strategic benefits of utilizing Microsoft Teams channels for trainer-led meetings, focusing on how the integration of scheduling, chat, and post-meeting resources can enhance the learning experience and streamline communication.
    2. Evaluate the importance of proactively configuring meeting options in Microsoft Teams, such as lobby settings, presenter roles, and recording preferences, for ensuring a productive and controlled training environment.
    3. Compare and contrast the use of breakout rooms and the Microsoft Whiteboard as interactive tools during a virtual training session, analyzing their respective strengths in facilitating collaboration and engagement among participants.
    4. Describe the steps involved in effectively incorporating polls into a Microsoft Teams training session, from creation and sharing to their potential impact on participant feedback and understanding.
    5. Analyze the features within Microsoft Teams that support post-meeting follow-up and assessment for trainers, including the attendance report and meeting recording, and discuss how this data can inform future training sessions.

    Glossary of Key Terms

    • Channel: A dedicated section within a Microsoft Teams team, organized around a specific topic, project, or discipline. Standard channels are accessible to all team members, while private channels restrict access to designated individuals.
    • Meeting Options: Customizable settings for a Microsoft Teams meeting that can be configured before the meeting starts, including who can bypass the lobby, who can present, and recording preferences.
    • Breakout Rooms: Smaller, separate virtual meeting spaces that can be created within a main Microsoft Teams meeting to facilitate focused discussions or group activities. Participants can be assigned manually or automatically to these rooms.
    • Meeting Tools: Features available during a Microsoft Teams meeting that enhance interaction and delivery, such as chat, screen sharing, participant management, breakout rooms, and the whiteboard.
    • Chat Space: A dedicated area associated with a scheduled Microsoft Teams meeting where participants can communicate through text messages, share files, and access meeting-related information before, during, and after the session.
    • Test Call: A feature in Microsoft Teams that allows users to check their audio and video devices before joining or hosting a meeting to ensure they are working correctly.
    • Host Controls: Features available to the meeting organizer or designated presenters that allow them to manage participants, such as muting, removing, or assigning roles.
    • Screen Sharing: The ability for a presenter to broadcast their computer screen or specific applications to meeting participants. Microsoft Teams offers various presenter modes to customize how the presenter’s video feed is displayed with the content.
    • Microsoft Whiteboard: A collaborative digital canvas within Microsoft Teams where participants can draw, write, add notes, and work together in real-time.
    • Attendance Report: A record generated by Microsoft Teams after a meeting concludes, detailing when participants joined and left the session, as well as their duration of attendance and role.

    Microsoft Teams for Trainers Briefing Document

    Date: October 26, 2023 Prepared By: Gemini AI Subject: Review of Microsoft Teams for Trainers Course

    This briefing document summarizes the key themes, important ideas, and facts presented in the provided transcript of a Microsoft Teams for Trainers course led by Mo Jones. The course aims to equip trainers with the necessary skills to effectively conduct meetings using Microsoft Teams.

    Main Themes

    1. Effective Meeting Scheduling and Preparation: A significant portion of the course focuses on how to properly schedule meetings within Teams channels and how to configure meeting options beforehand to ensure a smooth and productive session.
    2. Leveraging Pre-Meeting Tools for Engagement: The course emphasizes utilizing the chat space associated with a scheduled meeting to share pre-reading materials and create polls to engage attendees even before the meeting begins.
    3. Mastering In-Meeting Tools for Enhanced Collaboration: The training covers essential in-meeting tools such as participant management, chat, breakout rooms, screen sharing with different presentation modes, and the interactive whiteboard feature.
    4. Understanding Post-Meeting Reporting and Follow-up: The course highlights the automatic attendance tracking and meeting recording features of Teams, providing trainers with valuable data and resources for post-meeting review and follow-up.
    5. Importance of Clear Communication and Guidance for Attendees: The trainer emphasizes the need to inform attendees about basic Teams functionalities and shortcuts to ensure everyone can participate effectively.

    Most Important Ideas and Facts

    Scheduling Meetings and Adjusting Meeting Options

    • Meetings can be scheduled directly from a Teams channel using the “Meet” icon’s dropdown menu.
    • “Notice I’m currently on the asset management Channel I’m going to head on over to the top right of my screen and I want to take advantage of this meet icon here notice I can go ahead and conduct a meeting right now or I can use the drop down here to go ahead and schedule a meeting…”
    • Scheduling from a channel automatically populates the channel information in the meeting details.
    • “…do want to point out that because we use the feature to schedule the meeting right from our Channel it actually populates the channel right here for us right into our channels area…”
    • Meeting options can be adjusted after scheduling the meeting by accessing “Meeting options” within the meeting details. These options include:
    • Who can bypass the lobby (e.g., “People in my organization”).
    • Whether to always let callers bypass the lobby.
    • Notifications for join/leave events (can be turned off).
    • Who can present (e.g., “People in my organization and guests”, “Specific people”, “Only me”).
    • Allowing/disallowing microphones and cameras for attendees.
    • Automatic recording of the meeting.
    • Allowing/disallowing reactions.
    • Enabling live captions (if a caption service is set up).
    • “So here’s the resulting meeting options screen that opens in a new browser we’ll go ahead and expand this here and we have some decisions to make in terms of getting ourselves set up before our meeting has started here…”

    Hosting a Meeting Within a Teams Channel

    • Hosting within a channel keeps all meeting-related information in one place, facilitating pre- and post-meeting conversations.
    • “…the goal is we want to really be able to just keep all of the information in one spot so we can start the conversation before our meeting and we can continue the conversation after the meeting as well.”

    Utilizing Meeting Tools

    • Breakout Rooms:Breakout rooms can be set up before the meeting starts via the meeting details.
    • Rooms can be renamed, and participants can be assigned manually or automatically.
    • Room settings allow for assigning presenters to manage rooms (though this was later turned off in the example), setting time limits, automatically moving people to rooms, and allowing them to return to the main room.
    • “…we can go ahead and set up our rooms ahead of time before the meeting sometimes it’s very difficult while you’re in the meeting spending a lot of time setting the rooms up…”
    • Chat Space:Each scheduled meeting has a dedicated chat space for sharing files and pre-meeting communication.
    • Polls can be created and shared via Microsoft Forms, either by adding a “Forms” tab to the meeting chat or by sharing a direct link.
    • “So this is kind of the chat space that’s reserved for this meeting and so as you can see I was able to upload or attach a file for everyone to kind of take a look at before the actual meeting starts…”
    • Test Call:Users can make a test call within Teams settings to verify their audio and video devices are working correctly.
    • “At this point what we can do go ahead and click on make a test call it’s going to go through a video test and audio test and a microphone test for you…”
    • In-Meeting Host Controls:During a meeting, hosts have controls over participants (muting, disabling mics/cameras, making presenters, removing participants, spotlighting).
    • The meeting link can be copied and shared.
    • Meeting permissions can be managed, and the meeting can be locked.
    • Attendance list can be downloaded during the meeting.
    • Screen Sharing:Multiple present modes are available, including “Content only,” and layouts that incorporate the presenter’s video feed (e.g., “Standout,” “Side-by-side,” “Reporter”).
    • Users can share their entire screen or specific windows.
    • The option to “include computer sound” is available when sharing.
    • Microsoft Whiteboard:An interactive whiteboard can be shared during a meeting for real-time collaboration.
    • Features include pens, highlighters, erasers, sticky notes, text boxes, shapes, and templates (e.g., for brainstorming).
    • Participants can be allowed to edit the whiteboard.
    • Whiteboards can be exported as images.
    • “One of the features here is the Microsoft whiteboard and if I click on my whiteboard here will open up my whiteboard for me…”

    Post-Meeting Activities

    • An attendance report is automatically generated and available in the Teams channel where the meeting was held. This can be downloaded as an Excel file.
    • “Here is the attendance report we can actually go ahead and click on the attend ance report right here it will open in an Excel sheet…”
    • Meeting recordings are also automatically saved and accessible within the channel.
    • “…we can see that the meeting was recorded so we can play back the meeting right here…”
    • Meeting details, including attendance information (join/leave times, duration, role), can be viewed directly within Teams.
    • “…once I’m here I can actually click on the attendance and if I just click on the appropriate meeting here here we can see all of our attendees when they joined when they left the meeting duration and their role as well…”

    Target Audience

    • The course is designed for “team supervisors, content managers, information managers, and project managers as well.”

    This briefing document provides a comprehensive overview of the Microsoft Teams for Trainers course, highlighting the essential knowledge and skills covered to effectively leverage Teams for conducting training sessions.

    Frequently Asked Questions for Microsoft Teams Meetings (Trainers)

    1. What are the key objectives for trainers conducting meetings with Microsoft Teams, as highlighted in this course? The primary learning outcomes for trainers using Microsoft Teams for meetings are to effectively schedule meetings and adjust meeting options beforehand to ensure success. Additionally, trainers should be able to effectively host meetings within a Teams channel, keeping all related information in one accessible location for pre- and post-meeting engagement. Finally, the course aims to familiarize trainers with essential meeting tools like breakout rooms and PowerPoint sharing to enhance meeting productivity.

    2. Who is the intended audience for this Microsoft Teams for Trainers course? This course is designed for individuals in roles such as team supervisors, content managers, information managers, and project managers who are responsible for conducting meetings using Microsoft Teams.

    3. How can trainers schedule a meeting within a Microsoft Teams channel? To schedule a meeting within a Teams channel, navigate to the desired channel. In the top right corner, click the “Meet” icon and select “Schedule a meeting.” This will open a new window where you can add a title, required and optional attendees, set the date and time, and add meeting details. Since you initiated the scheduling from the channel, the channel will automatically be populated in the meeting details, ensuring the meeting is associated with that specific channel. Note that scheduling meetings directly from private channels is not supported; you would need to use the calendar and invite members individually.

    4. What meeting options can trainers configure before a meeting starts, and why is this important? Before a meeting begins, trainers can configure various meeting options to control the meeting environment. These options, accessible by editing a scheduled meeting and selecting “Meeting options,” include: * Who can bypass the lobby: Determine who joins the meeting directly versus waiting in a lobby. * Always let callers bypass the lobby: Allow participants joining via phone to enter directly. * Announce when callers join or leave: Receive notifications when participants join or leave (can be turned off to avoid distraction). * Who can present: Designate who has presenter privileges (e.g., everyone, specific people, only the organizer). * Allow mic and camera for attendees: Control whether attendees can use their microphones and cameras. * Record automatically: Start recording the meeting as soon as it begins. * Allow reactions: Enable or disable attendee reactions like thumbs up or applause. * Enable live captions: Turn on live transcription if a caption service is set up.

    Configuring these options in advance allows trainers to set the stage for a productive and well-managed meeting.

    5. How can trainers utilize the chat space associated with a scheduled Microsoft Teams meeting before, during, and after the meeting? The chat space associated with a scheduled Teams meeting, accessible via a tab in the meeting details, serves as a central communication hub. Before the meeting, trainers can share pre-reading materials, attach relevant files, and post introductory messages. During the meeting, the chat can be used for sharing links (like polls), answering questions without interrupting the flow, and general communication. After the meeting, the chat retains all conversations and shared resources, providing a record and a space for continued discussion.

    6. How can trainers effectively use breakout rooms in Microsoft Teams meetings to facilitate focused discussions or activities? Microsoft Teams allows trainers to create and manage breakout rooms, even before a meeting starts. From the meeting details, trainers can access the “Breakout rooms” tab to create a specified number of rooms, rename them, and manually or automatically assign participants. During the meeting, trainers can open and close rooms, make announcements that are broadcast to all breakout rooms, set time limits for sessions, and choose whether to automatically move people to rooms and allow them to return to the main meeting. Assigning presenters to manage specific rooms is also an option. Setting up breakout rooms in advance saves valuable time during the live meeting.

    7. What are some of the meeting tools available to trainers during a Microsoft Teams meeting to engage participants and manage the session effectively? During a Teams meeting, trainers have access to several tools to enhance engagement and management: * Participant Management: View and manage attendees, mute individuals or everyone, disable microphones or cameras, spotlight presenters, remove participants, and download an attendance list. * Chat: Facilitate real-time text-based communication and share links (e.g., for polls). * Breakout Rooms: Organize participants into smaller groups for focused discussions. * Screen Sharing: Share their entire screen, a specific window, or a presentation. Teams offers various presentation modes to integrate the presenter’s video feed with the content. * Microsoft Whiteboard: A collaborative digital canvas for brainstorming, note-taking, and interactive activities, with features like pens, sticky notes, shapes, templates, and the ability for participants to contribute. * Reactions: Allow attendees to provide non-verbal feedback (can be disabled). * Raising Hand: Attendees can virtually raise their hand to ask questions without interrupting.

    8. How can trainers access and utilize post-meeting information and reports in Microsoft Teams? After a Teams meeting concludes, several pieces of information and reports become available within the associated channel. These include: * Meeting Recording: A recording of the meeting is automatically saved and accessible for playback directly within the channel or via a shareable link. * Attendance Report: A downloadable Excel file or an in-app view detailing attendee join and leave times, duration of participation, and roles. This report provides valuable insights into meeting participation. * Chat History: All messages and shared files within the meeting chat remain accessible in the channel. * Poll Results: If a poll was conducted, the results are typically collected and may be visible within the channel or the associated Forms application.

    This post-meeting information allows trainers to review the session, track attendance, and share resources with attendees who may have missed the meeting or want to revisit the content.

    Microsoft Teams: A Trainer’s Guide to Meetings

    Based on the sources, Microsoft Teams is a platform that can be used by trainers to conduct meetings. This course is designed to guide trainers on what they need to know when conducting meetings with Teams, and it emphasizes interactive learning with opportunities to pause and practice.

    Here are some key aspects of using Microsoft Teams as highlighted in the sources:

    • Scheduling Meetings: You can schedule meetings within a specific Teams channel, which automatically populates the channel in the meeting details. While you cannot schedule a meeting directly from a private channel, you can do so from a standard channel. When scheduling, you can add a title, required and optional attendees, set the date and time, and add details. The scheduling assistant helps identify potential calendar conflicts. Once scheduled, the meeting will appear as a post in the channel.
    • Adjusting Meeting Options: After scheduling a meeting, you can access “Meeting options” to configure settings before the meeting starts. These options, which open in a web browser, allow you to control:
    • Who can bypass the lobby (e.g., only you, people in your organization).
    • Whether callers can always bypass the lobby.
    • Notifications for when people join or leave.
    • Who can present (e.g., everyone, specific people, only you).
    • Whether to allow microphones and cameras for attendees.
    • Automatic recording of the meeting.
    • Whether to allow reactions during the meeting.
    • Enabling live captions (if a caption service is set up).
    • Hosting Meetings within a Team’s Channel: Hosting meetings within a channel keeps all related information in one place, allowing for conversations before and after the meeting in the same space.
    • Meeting Tools: Teams offers various tools to enhance meetings:
    • Breakout Rooms: You can set up breakout rooms before the meeting starts, assigning participants manually or automatically. You can rename rooms, add or assign participants, and configure room settings like time limits and automatically moving people to rooms. During the meeting, you can open and close rooms, make announcements to all rooms, and manage participants within rooms.
    • Sharing PowerPoint: You can share your screen or specific windows, including PowerPoint presentations. Teams offers different present modes that integrate your camera feed with the content in various layouts. You can also choose to include computer sound when sharing.
    • Chat Space: Each scheduled meeting has a dedicated chat space where you can share files and communicate with attendees before, during, and after the meeting.
    • Polls: You can create polls using Microsoft Forms and share the link in the meeting chat for attendees to participate in. You can create the form beforehand and share the link during the meeting.
    • Whiteboard: Microsoft Teams has a built-in whiteboard feature that allows for real-time collaboration. You can draw, add notes and text, insert shapes, and use templates for various activities like brainstorming. Participants can also interact with the whiteboard, depending on the settings. You can export the whiteboard as an image.
    • Test Calls: Before conducting a meeting, it’s advisable to make a test call to ensure your audio and video devices are working correctly. You can access device settings through your profile menu to configure your speakers, microphone, and camera, and then initiate a test call.
    • Host Controls During a Meeting: As a meeting host, you have several controls available during the meeting:
    • Managing participants, including muting everyone or individual attendees, disabling microphones and cameras, spotlighting participants, removing participants, and making someone a presenter.
    • Managing permissions and locking the meeting to prevent further entry.
    • Accessing the meeting chat to share links or run polls.
    • Managing pre-configured breakout rooms.
    • Accessing meeting options for last-minute changes and viewing meeting information.
    • Changing the meeting view (e.g., gallery view, large gallery, together mode).
    • Reminding attendees of useful shortcuts, such as Ctrl+Shift+K to raise or lower their hand and Ctrl+Shift+M to mute/unmute.
    • Attendance Reports: After a meeting concludes, Teams generates an attendance report that you can access in the channel where the meeting was held or through the meeting details. The report provides information on when attendees joined and left the meeting, their duration, and their role. You can view this information directly in Teams or download it as an Excel file. The meeting recording is also typically available in the channel.

    The sources indicate that this Microsoft Teams training is intended for team supervisors, content managers, information managers, and project managers. The goal is to equip these individuals with the skills to effectively schedule and conduct meetings using Microsoft Teams.

    Microsoft Teams Meeting Guidance for Trainers

    Based on the sources, the training course provides significant guidance for trainers on how to effectively use Microsoft Teams for conducting meetings. The overall goal is to equip trainers with the knowledge and skills to schedule, set up, host, and follow up on meetings within the Teams environment.

    Here is a breakdown of the trainer guidance offered:

    • Effective Scheduling and Meeting Options: Trainers are guided on how to schedule meetings within a specific Teams channel to keep all related information in one place. The course emphasizes the importance of adjusting meeting options before the meeting starts to ensure a smooth and successful session. This includes configuring who can bypass the lobby, presenter roles, microphone and camera permissions for attendees, automatic recording, and enabling reactions.
    • Hosting Meetings Effectively: The training highlights the benefits of hosting meetings within a Teams channel for pre- and post-meeting communication. It advises trainers to familiarize themselves with various meeting tools and host controls.
    • Utilizing Meeting Tools: Trainers receive specific guidance on using key Teams meeting features:
    • Breakout Rooms: The course provides step-by-step instructions on how to set up breakout rooms before a meeting, including creating rooms, renaming them, and assigning participants manually or automatically. It also covers managing room settings like time limits and sending announcements to all rooms during a meeting. This pre-meeting setup is recommended to save time during the actual session.
    • Sharing Content: Trainers are shown how to share their screen or specific windows, including PowerPoint presentations. The training demonstrates different present modes that integrate the presenter’s video feed with the content. It also advises on enabling computer sound when sharing audio.
    • Chat Space: The course encourages trainers to utilize the meeting chat space to share files and engage with attendees before, during, and after the meeting. Trainers are shown how to attach files and leave messages for attendees to review beforehand.
    • Polls: The training demonstrates how to create polls using Microsoft Forms and share the link within the meeting chat to gather feedback or conduct quick surveys during the session. It notes that the process differs slightly for meetings scheduled within a channel versus outside of one.
    • Whiteboard: Trainers are introduced to the Microsoft Whiteboard as a collaborative tool for activities like brainstorming. The course covers basic functionalities like drawing, adding notes and text, using shapes and templates, and adjusting settings to allow participant editing.
    • Importance of Test Calls: The guidance emphasizes the value of conducting a test call before a meeting to ensure audio, video, and microphone are functioning correctly. Trainers are shown how to access device settings and initiate a test call.
    • Managing Participants and Host Controls: The training familiarizes trainers with various host controls available during a meeting. This includes managing participants (muting, disabling cameras, spotlighting, removing, making presenters), managing permissions, and locking the meeting. Trainers are also advised to inform attendees of useful shortcuts, such as Ctrl+Shift+K for raising/lowering hands and Ctrl+Shift+M for muting/unmuting.
    • Post-Meeting Activities and Attendance: The course guides trainers on how to access and utilize post-meeting information, specifically the attendance report and meeting recording. It shows how to download the attendance list as an Excel file or view the data directly in Teams. Trainers are informed that the meeting recording is typically available in the channel where the meeting took place.

    In essence, the provided sources constitute a comprehensive guide for trainers looking to leverage the features of Microsoft Teams to deliver effective and engaging online training sessions. The guidance focuses on pre-meeting preparation, effective facilitation during the meeting, and post-meeting follow-up.

    Microsoft Teams: Features for Effective Meetings

    Based on the sources, Microsoft Teams offers a wide array of features designed to facilitate effective and engaging meetings for trainers and attendees alike. These features cover the entire meeting lifecycle, from scheduling to post-meeting follow-up.

    Here’s a discussion of key meeting features in Microsoft Teams:

    • Scheduling Meetings: Microsoft Teams allows users to schedule meetings directly within a specific Teams channel. This action automatically posts the meeting information within that channel. While scheduling, you can specify the meeting title, add required and optional attendees, set the date and time, and include meeting details. The platform also provides a scheduling assistant to help identify potential conflicts in attendees’ calendars. It’s important to note that scheduling meetings directly from a private channel is not supported; instead, users need to schedule via the calendar and invite members individually.
    • Adjusting Meeting Options: After scheduling a meeting, organizers can configure meeting options to control various aspects of the session before it begins. These options, accessible through a web browser, include settings for:
    • Who can bypass the lobby (e.g., everyone, people in my organization, only me).
    • Whether to always let callers bypass the lobby.
    • Notifications for when participants join or leave.
    • Who can present (with options like everyone, specific people, or only me).
    • Allowing or disallowing microphones and cameras for attendees.
    • Automatically recording the meeting.
    • Enabling or disabling reactions.
    • Turning on live captions (if the service is available).
    • Hosting Meetings within a Team’s Channel: Conducting meetings within a specific Teams channel is emphasized for its ability to keep all meeting-related information, including pre- and post-meeting conversations and shared files, in one centralized location.
    • Utilizing Meeting Tools: Teams provides several tools to enhance the meeting experience:
    • Breakout Rooms: Organizers can create and configure breakout rooms before or during a meeting. This includes specifying the number of rooms, renaming them, and assigning participants either manually or automatically. During the meeting, facilitators can open and close rooms, make announcements to all rooms, and adjust room settings. Presenters can even be assigned to manage specific breakout rooms. Options also exist to set a time limit for breakout sessions and to automatically move people to rooms, as well as allowing participants to return to the main room.
    • Content Sharing: Teams allows users to share their screen, specific windows, or PowerPoint presentations. When sharing, there are different present modes available that integrate the presenter’s camera feed with the content in various layouts (e.g., content only, side-by-side, news broadcast). Organizers can also choose to include computer sound when sharing.
    • Chat Space: Each scheduled meeting has a dedicated chat space where participants can communicate before, during, and after the meeting. This space can be used to share files, links, and messages related to the meeting.
    • Polls: Microsoft Teams integrates with Microsoft Forms to allow organizers to create and conduct polls during meetings. Poll links can be shared in the meeting chat for attendees to respond to. Forms can be created beforehand and readily shared.
    • Whiteboard: The platform offers a Microsoft Whiteboard feature for real-time collaboration. Participants can use digital pens, add notes and text, insert shapes, and utilize various templates for activities like brainstorming. The whiteboard can be shared during the meeting, and the organizer can control whether attendees can edit it. The whiteboard can also be exported as an image.
    • Participant Management: During a meeting, hosts have several controls for managing participants. These include the ability to show participants, mute everyone or individual attendees, disable microphones and cameras, spotlight a participant, remove someone from the meeting, and make a participant a presenter. Hosts can also manage permissions and lock the meeting to prevent further participants from joining.
    • Meeting Views: Teams offers different meeting views, with the default being the gallery view. Other options include large gallery for viewing more than nine videos at once and together mode, which places participants in a shared virtual space.
    • Reactions and Live Captions: Participants can use reactions (like thumbs up or clapping hands) during meetings if this feature is enabled in the meeting options. Additionally, if a caption service is set up, live captions can be turned on to provide real-time transcription.
    • Post-Meeting Features: After a meeting concludes, Microsoft Teams provides valuable post-meeting information. This includes:
    • Attendance Reports: Teams automatically generates an attendance report that details when attendees joined and left the meeting, their duration, and their role. This report can be accessed directly in the Teams channel or downloaded as an Excel file.
    • Meeting Recordings: If the meeting was recorded, the recording is typically available in the Teams channel where the meeting took place. Links to the recording can also be obtained.
    • Pre-Meeting Preparations: The platform encourages trainers to conduct test calls to ensure their audio and video devices are functioning correctly before a live session. Users can access device settings to configure their setup and initiate a test call. Hosts can also copy the meeting link and share it with attendees if needed. Meeting info, including join details, can also be easily accessed and shared.

    These features collectively make Microsoft Teams a robust platform for conducting various types of meetings, particularly for training purposes, as highlighted in the sources.

    Microsoft Teams Breakout Rooms: Setup and Management

    Based on the sources, Microsoft Teams offers a comprehensive Breakout Rooms feature designed to facilitate smaller group discussions and activities within a larger meeting. This feature allows meeting organizers and presenters to divide participants into separate, smaller rooms for focused collaboration. The sources provide detailed guidance on how to set up and manage breakout rooms both before and during a meeting.

    Here’s a discussion of the Breakout Rooms feature:

    • Pre-Meeting Setup:
    • Organizers can set up breakout rooms before a meeting starts. This is done through the meeting details page, where a dedicated “Breakout rooms” tab is available.
    • The organizer can create a specified number of rooms.
    • Each room can be renamed to reflect the group’s task or theme (e.g., “Team One,” “Team Two”).
    • Participants can be assigned to rooms either manually or automatically.
    • Manual assignment allows the organizer to choose specific participants for each room. This might require attendees to have accepted the meeting invitation.
    • Automatic assignment randomly distributes participants across the created rooms.
    • Room settings can be configured in advance. These include:
    • Assigning a presenter to manage a particular room (this requires the person to be set as a presenter in the general meeting options).
    • Setting a time limit for the breakout sessions.
    • Choosing to automatically move people to rooms once the rooms are opened.
    • Allowing or disallowing participants to return to the main meeting room on their own.
    • During the Meeting:
    • During the live meeting, the organizer can open the pre-configured breakout rooms. Participants will then be moved to their assigned rooms.
    • The organizer retains control over the breakout rooms and can perform several actions:
    • Open and close rooms individually or all at once.
    • Join any of the breakout rooms to monitor discussions or participate. (This functionality is implied but not explicitly detailed in the provided excerpts).
    • Make announcements to all open breakout rooms simultaneously to provide updates or reminders (e.g., “five minutes remaining”).
    • Add more rooms if needed during the meeting.
    • Recreate the rooms, which would typically involve reshuffling the participants.
    • Delete rooms.
    • Benefits and Use Cases:
    • Setting up breakout rooms beforehand can save valuable time during the meeting.
    • Breakout rooms are useful for focused discussions, small group activities, and collaborative tasks.
    • The ability to assign participants manually allows for the creation of specific working groups based on skills or objectives.
    • Room settings provide flexibility in structuring breakout sessions with time limits and controlled movement between rooms.
    • Announcements ensure that organizers can communicate important information to all breakout groups without having to enter each room individually.

    In summary, the Breakout Rooms feature in Microsoft Teams is a powerful tool for trainers to enhance engagement and facilitate collaborative learning experiences by dividing larger groups into smaller, more focused discussion spaces. The platform allows for comprehensive pre-meeting configuration and provides organizers with significant control over the rooms and participants during the live session.

    Microsoft Teams Meeting Attendance Reports

    Based on the sources, Microsoft Teams provides meeting reports, primarily focused on attendance tracking, to help organizers understand participation in their meetings. These reports offer valuable insights into who attended, when they joined and left, and their overall presence during the session.

    Here’s a breakdown of the meeting report features discussed in the sources:

    • Automatic Generation: After a meeting concludes, Microsoft Teams automatically generates information and reports related to the meeting within the Teams channel where the meeting was conducted. This centralized location keeps all meeting-related data together.
    • Components of the Report in the Channel: The information posted in the channel after a meeting can include:
    • Files shared during the meeting.
    • Notification of when the meeting recording was started.
    • Confirmation if a form or poll was shared.
    • A direct link to the attendance report.
    • Access to the meeting recording, with options to play it back, open it, or get a shareable link.
    • Accessing the Attendance Report: There are a couple of ways to access the attendance data:
    • Directly in the Channel: A post-meeting message in the channel will often include a link to the attendance report. Clicking this link typically opens the report in Microsoft Excel.
    • Via Meeting Details: Organizers can go back to the scheduled meeting in their calendar or find the meeting post in the channel and select “View meeting details”. Within the meeting details, there is an “Attendance” tab where a summary of attendee data is available.
    • Content of the Attendance Report: The attendance report, whether viewed in the Teams interface or the downloaded Excel file, provides the following information:
    • Title of the meeting.
    • Start and end time of the meeting.
    • Meeting ID.
    • A list of all attendees.
    • The time each attendee joined the meeting.
    • The time each attendee left the meeting.
    • The duration for which each attendee was present.
    • The role of each attendee (e.g., organizer, attendee).
    • Downloading the Attendance Data: Besides viewing the summary in Teams, organizers have the option to download the attendance data as an Excel file from both the post-meeting channel information and the “Attendance” tab within the meeting details. This allows for further analysis, sharing, or record-keeping.
    • Channel Summary: The Teams channel provides a condensed view of the meeting outcomes. Users can click on a “replies” icon to see a more detailed summary of the activities and reports associated with that specific meeting.

    In summary, Microsoft Teams automatically generates attendance reports that are readily accessible within the meeting’s channel and via the meeting details. These reports offer a comprehensive overview of participant activity, including join and leave times, duration of حضور, and roles, and can be downloaded for more detailed analysis. This feature is a valuable tool for trainers to track attendance and engagement in their sessions.

    Teams for Online Teaching Tutorial

    The Original Text

    hello and welcome to our Microsoft teams for trainers my name is Mo Jones and I’ll be guiding you through this course today we’ll cover what you need to know as a trainer when you’re conducting meetings with teams this is interactive so be ready to pause the video and practice if you’re enjoying these videos please like And subscribe if you’re looking to earn certificates and watch videos without ads sign up for learn it anytime our dedicated online training Subscription Service check the link in the description for more information if you have any questions you want answered by one of our instructors please join our off-site community the link is in the description as well as always if this course has exercise files you’ll find them in the video description below let’s take a look at our learning outcomes for today notice that we have three primary outcomes that we want to accomplish for today we want to effectively schedule meetings and we want to be able to adjust those meeting options before our meeting starts so that we can be set up to win here we also want to be able to effectively host a meeting Within A team’s channel to be specific so we’ll take a look at that as well and the goal is we want to really be able to just keep all of the information in one spot so we can start the conversation before our meeting and we can continue the conversation after the meeting as well we want to go ahead and discover the use of meeting tools such as breakout rooms and sharing PowerPoints as well and we’ll take a look at some other useful tools that will help us to make the most out of our meetings so who should attend this is for team supervisors content managers information managers and project managers as well [Music] so we have a few tasks here in the form of mini lessons we want to go ahead and schedule a meeting we’ll spend some time using the chat space so we can start the conversation before the meeting actually takes place it’s a good idea to conduct a test call and have a run through so we can take a look at some of the hosting tools that are available for us we’re actually going to go ahead and start a meeting and we’ll take a look at some of the tools and after the meeting we’ll go ahead and download our attendance and take a look at the data that was gathered there as well so go ahead and open up your teams hopefully you have a team and a channel that’s already available if not go ahead and pause this video make sure that you have a team and a channel that you can modify and come right back welcome back well I went ahead and launched my Microsoft teams desktop app and if you take a look at current Curr have a team here it’s called the technology team and underneath this team I have two channels one is a standard Channel which is called Asset Management in which everyone that’s a member of my technology team will be able to interact with this Channel and then I have a private Channel inside of my team here called it budget where I only have a few specific people from my team that can access this channel here as well so at this point what I want to do I want to go ahead and actually schedule a meeting notice I’m currently on the asset management Channel I’m going to head on over to the top right of my screen and I want to take advantage of this meet icon here notice I can go ahead and conduct a meeting right now or I can use the drop down here to go ahead and schedule a meeting so I want to go ahead and do that I’ll go back to my budet my private channel here and currently as you can see you cannot schedule a meeting yet at least from a private Channel and so we would need to go to the calendar and invite those members individually there as well so I’ll go back to my Asset Management channel here and I want to go ahead and schedule a meeting it’s going to open up another window for me where I can enter some information regarding my meeting so here’s my meeting I just need to go ahead and fill this out here so I can go ahead and add the title I can go ahead and add some required attendees which I’ll go ahead and do and if I want to I can go ahead and add some details here do want to point out that because we use the feature to schedule the meeting right from our Channel it actually populates the channel right here for us right into our channels area so notice it’s on the technology team and the channel is the Asset Management so I’ll go ahead and fill this out call this monthly meeting and I’ll go ahead and set the date here maybe I’ll put it the first of the month here so April 1st and I’ll change the time give everyone some time after lunch here kind of get settled in then we’ll meet this point I’ll go ahead and add the required attendees just add a few here and maybe one more okay if I wanted to I can go ahead and add some optional attendees but I’m pretty much okay for now we can take advantage of the scheduling assistant we can have a sneak peek and into each person’s calendar here and just kind of look for any conflicts along the way so I’m pretty much good to go I’m going to go ahead and click on send and this will bring me back to my channel where I can have the opportunity to come back into this meeting and edit some of the meeting details so here we are we’re back to that channel here’s our asset management Channel and now we see the posting here for our monthly meeting so now if I were to go ahead and click on the more options here I can actually go back into that meeting so now that the meeting is scheduled I have some options in there that I can take advantage of and more specifically now that the meeting has been created I have this meeting options here that I can use and make sure that I can set up some things before my meeting actually takes place so I’ll do my due diligence I’ll make sure everything is set up so that my meeting can run very very very smoothly so I’ll go ahead and click on meeting options it’s going to open up in another browser so here’s the resulting meeting options screen that opens in a new browser we’ll go ahead and expand this here and we have some decisions to make in terms of getting ourselves set up before our meeting has started here so the first option is who can bypass the lobby and so we have different options in here we can say only I can bypass the lobby so I want to be able to let everyone in as they enter the meeting or I can say people in my organization I’ll leave it as people in my organization here the second option here is to always let callers bypass the lobby now a caller is someone that that’s actually calling in Via a phone number that’s provided when the meeting is scheduled so if your organization has the calling feature turned on when your attendees receive the email a phone number will be embedded in that email invitation and they can call in with their telephone and so I will let them bypass the lobby come straight in if they’re calling via phone I can set an alert to notify me when people either join or leave the meeting this could be distracting so it’s up to you I’ll turn that off here and then who can present we have different options here so we can say everyone can present people in my or organization and guests specific people or only me and so it’s your meeting you’ll have an idea of what you want to accomplish if you have specific people who are presenting you can go ahead and and just kind of choose specific people here all right so I can choose some specific people maybe Alex right and then and the other option is to allow microphones for attendees you can turn that off or on allow camera for attendees you can turn that off and on as well some sometimes you may forget to record the meeting and so we can actually just turn that on automatically I’ll toggle this on here and we can allow reactions different reactions such as thumbs up or clapping hands we can turn those off or on depending on the type of setting that you’re providing and then finally the last option is for some translation if you want to turn on live captions here we can enable this as long as you have a caption service that’s set up I’m going to go ahead and click on Save and I’m all done I’m going to go ahead and close that and I’ll go ahead and click close here so we’re all set for our meeting there’s a few more things that we can do but for now go ahead pause the video go ahead and schedule a meeting right from one of your channels maybe create a channel and go ahead and schedule a meeting once the meeting is scheduled go back and open up the meeting options and specify the options that you want before your meeting starts and come right back welcome back well hopefully you are able to schedule the meeting and set up your meeting options there as well I want to do a few more things I’m going to go back into my meeting options here so I’ll click on view meeting details under the more menu and there’s some other things in here that I want to go ahead and interact with so now that I’ve scheduled a meeting I also have this chat option here I also have the breakout rooms that I can go ahead and take care of so I want to go ahead and set up the breakout rooms ahead of time so I’ll go ahead and click on breakout rooms and just wait for that to be created here I’ll go ahead and create the rooms I want two rooms and I’ll just go ahead and add the rooms here so this is good because we can go ahead and set up our rooms ahead of time before the meeting sometimes it’s very difficult while you’re in the meeting spending a lot of time setting the rooms up and so well we can go ahead and take care of this right now so we have two rooms here so if I click on my room settings for room one I can go ahead and click on edit I can go ahead and rename this room if I want to maybe I’ll call this team one and then I’ll go ahead and call this one team [Music] two at this point I’ll go ahead and add or assign the participants so I can assign them manually or I can do it automatically in this case I I want to go ahead and manually assign my participants here and so it’s a matter of just clicking on someone’s name and assigning them to a particular room Alex will go to room uh Team one I want Megan on team two also want Diego on room one and Patty on room room two so just like that if I click on Alex I can also assign from here as well if I had a lot of participants I can find them by searching here but I’m pretty much good to go I’ll go ahead and click on assign so these are kind of the same things that we’ll be doing if we were in our meeting we have some other opts here up to the top right I can go ahead and add another room if I want to I can recreate the rooms I can delete the rooms or I can have some more settings here for my breakout rooms if I click on these settings gear here I can actually assign a presenter so when I set up my meeting options earlier in the web browser if I assigned a specific person to be a presenter I can actually assign them to manage a particular room right so Alex I can say Alex can manage one of the rooms if I want to okay I can set a time limit I can say we just want each breakout room to be let’s say maybe 15 minutes 15 minutes is okay we’ll leave it at that there we go and then the other option down here is automatically move people to Rooms I like to use this and if we want to allow people to return to the main room or the main meeting room we can toggle this option here as well so I’ll turn turn all of these on I’ll go ahead and click okay here I’ll turn off my presenter to manage the rooms and just like that we were able to go ahead and set up our breakout rooms ahead of time making things a lot more efficient for us when we actually run our meeting so go ahead and pause the video and go ahead and set up your breakout rooms sometimes it will be necessary if I go back into the meeting option here sometimes you’ll find it necessary to add some of your attendees here in the required attendees portion here otherwise you would need to wait for everyone to kind of accept the meeting before you can create the breakout rooms so go ahead pause the video set up your breakout rooms and come right back welcome back well so far we were able to schedule a meeting set up meeting options and set up breakout rooms now we’re going to go back into the meeting details and we’re going to make use of the chat space that’s available and we’re going to go ahead and create a poll that we can use for our meeting or for our Channel there as well so I just Clos my slide deck I’m right here back on my meeting details if you take a look on the top here we’ll see a tab for the chat I’ll go ahead and click on that chat icon here and so this is kind of the chat space that’s reserved for this meeting and so as you can see I was able to upload or attach a file for everyone to kind of take a look at before the actual meeting starts I just left a little message here that says please read before our meeting again we can always attach a file by clicking on the attachment icon right here now I just simply uploaded that from my computer here here are the team rules maybe I’ll upload another file here just book one file okay and maybe I’ll just say please complete okay so please complete your section of the spreadsheet so we’re just going to be using this space here to get anything ready before our meeting we could also if I click on close here we could also do that right here in our main chat space but it’s good to kind of just have that separate space that we can focus on right for the meeting here as well so at this point what I want to do I want to go ahead and actually create a poll you can do it from the chat so right here you can click on the form icon on and that will actually allow you to kind of create a quick poll here but I want to be able to create one so I’ll go ahead and click on the add a tab icon here and I’m going to go ahead and search for forms and so here’s my form so if I have any existing forms I can drop them in here I don’t currently have any so I want go ahead and create a new one here as well so the process of using a form in a meeting is different for a meeting that is scheduled within a channel as opposed to a meeting that is scheduled outside of a channel in this case what we can do is create the form and then share the link during our meeting as well so I’ll go ahead and just kind of write this up here so went ahead and said I’ll call this team event I don’t want to post to the channel about this yet so I’ll just kind of leave this here I’ll go ahead and click save so it’s setting up my form for me notice how it adds it here at the top of my channel it’s called edit team event and I’ll just go ahead and add a I’ll add a multiple choice question here and I’ll just keep it simple okay so we’ll choose an option we can have a barbecue at the [Music] beach hopefully it’s warm outside option two we’ll have a movie marathon and I’ll add one more option here and maybe my third option will be carryi night so we’ll do carry okay so at that point I can have a few options here I can say if it’s required or not maybe I will do I’ll leave that here have some other options here I can Shuffle the options so forth and so on some more advanced features here but I want to go ahead and keep it simple pretty much done so I’ll go ahead and click on the share icon here and I want to just copy this here right I’ll kind of just save this for a little later so I’ll copy this here I can shorten the URL if I want to so I’ll copy this and I’ll leave this later on for when I’m running my meeting I can go ahead and run this poll here so I’m going to go back to the posts if I wanted to I can drop it in right here in the form of a chat I can insert that link here but want to go ahead and save that for the meeting here as well so just a few ways take advantage of the chat and go ahead and just drop in some files or any special meeting related items that you need in there go ahead and create a poll as well copy that link make sure that you have it readily available for our meeting and come right back let’s go ahead and move on to the next section of our course here on teams for trainers we want to go ahead and make a test call just to make sure that our audio and our video is all working correctly and then we’re going to go ahead and run an instant meeting and just take a look at some of the tools that we need to be aware of before we conduct our meeting so I’m going to go ahead and click on my settings menu right next to my profile here so for settings and more I’m going to go ahead and click on settings and then I’ll go ahead and click on devices here so notice here you can go ahead and set up your audio and your video devices here so here are my speakers here’s my microphone and if I scroll down I can go ahead and take a look at my camera as well I’m having teams automatically adjust my camera controls there’s my HD webcam as well so at this point what we can do go ahead and click on make a test call it’s going to go through a video test and audio test and a microphone test for you it will provide you with instructions as you kind of go through the test call and if everything is okay you’re good to go otherwise just come back and make some changes to your devices there as well so pause the video and go ahead and make your test call my test call was completed now I’m back on my Asset Management channel here and so before my meeting starts I want to go ahead and just launch a quick meeting it will just be me by my myself here so I’ll go ahead and meet right away okay and at this point I just want to go ahead and join the meeting and take a look at some of the tools that I need to be aware of here so notice right here if I want to I can go ahead and copy the meeting link and if I want to invite any other people maybe someone is kind of you know not just kind of disconnected and they need that link they can have that option there as well so notice that we have the participants menu we can go ahead and show our participants our attendees are not here yet okay but we can kind of search through for our participants by typing in the search box on the more option here we can manage permissions we can go ahead and lock the meeting so that no one else can enter after a certain point as well and whenever we’re ready we can go ahead and download the attendance list terms of chat here is where we can drop in that link for our form or we can run the form there for everyone and in terms of breakout rooms right remember we did create the breakout rooms ahead of time so instead of setting these up they’ll automatically be created for us and we can just move things around as needed we’ll go ahead and cancel this here so the next thing here if I click on the more actions here so if I want to make any last minute changes I can go ahead and click on the meeting options and make some changes here as well someone ask about the meeting info we can always pull up the meeting info here and I can go ahead and copy the join info and I can share that with other people here as well so I’ll go back to my more options here one thing to not there will be different views that default view is the gallery view so we can kind of move things around here if you want to view more than nine videos at once we can choose to large Gallery the together mode is very popular you can share a virtual space with four more people and you can change the environment from an auditorium to a conference table as well there’s some other options here to show The Gallery at the top or to go ahead and focus on the content as well and so these are just some of the options that we can kind of be prepar appeared for here and again for the reactions we can remind people that they can press control shift plus K to be able to raise or lower their hand so once we’ve passed the equipment test and we’ve just taken a look around at some of the menus in here some of the host controls that we may need to use for our meeting we’re pretty much good to go I’m going to go ahead and leave this meeting here actually I’ll end the meeting and I’ll just miss this here all right so go ahead and pause the video finish your equipment test there and go ahead and launch a quick meeting and just make sure that you’re ready to use some of the host controls in preparation for your upcoming meeting welcome back well it’s time to go ahead and launch our meeting we’ll fast forward until that date here and we’ll start the meeting and we’ll go ahead and look at the overview of some of the meeting tools that we want to expl explain to our attendees we don’t want to assume that they understand or know how to use all the tools such as raising your hand or muting your microphone we’ll go ahead and present our screen we’ll open up our breakout rooms and we’ll demo a whiteboard activity as well so I’m going to go ahead and go back to my Asset Management channel here and I’ll go ahead and launch this meeting I’ll go ahead and click on join go ahead and join the meeting I’ll make sure that my microphone is turned off I’ll launch it here so once I launch the meeting here I just need to wait for my attendees to arrive now that we have a few people in here we want to go ahead and just remind them of some basic features uh such as raising your hand or using the chat okay using the chat here as well accessing the chat and we want to remind them of the shortcuts uh namely some of the meeting shortcuts such as raising or lowering your hand we can advise them that you can press control shift K if you want to raise or lower your hand so pressing it once will raise your hand in form of asking a question so as to not interrupt the speaker or the presentation and to lower your hand you can go ahead and toggle control shift K again as well you can ask everyone to make sure that they please mute themselves unless it is necessary they can use the shortcut key control shift M to go ahead and mute themselves as well at this point you can just kind of remind them of any kind of ground rules that was set forth before the meeting as well as you can see because we did choose the meeting option to have the recording to be automatic there we do see it here I’ll go ahead and dismiss this to kind of move this out of the way I’ll go ahead and click on my participants icon here and take a look at the menu now that we have some attendees in our actual meeting we have the option here to mute everyone maybe we want to mute everyone to kind of get things just organized here we can disable the microphones disable the cameras we can go ahead and manage any other permissions that we want to and whenever we’re ready we can go ahead and download the attendance list for individuals we can type a name to search for a particular person or as we Mouse over each of the individuals here notice that we can interact with them we can turn off their microphones right from here individually and we have some options here so we can Spotlight a particular person that will make their tile bigger on the team’s screen here as well we can remove the person from the meeting or we can go ahead and make the person a presenter so all these options here are available once our attendees are actually in the meeting and we’ll have those options there for them at this point we can go ahead and we can launch that poll actually that we created earlier so in the chat we can go ahead and paste that link right here and if we press enter all of our attendees have the opportunity to go ahead and click on that form which will open up in a new browser for them and they can enter that poll and the poll will be collected and updated in our teams channel here as well going to go ahead and close this side panel here for the meeting chat we do have our rooms here so here are our breakout rooms I’ll go ahead and click on here okay so we did have these breakout rooms set up ahead of time as you can see here’s team one with Alex and Diego and team two here with Megan and Patty so I can go ahead and open up these rooms here since Megan and Patty are here and that should pop them right into the room if I want to I can go ahead and add add a room if I want to if I had more participants here I can actually go ahead and assign them as well I can go ahead and recreate the breakout rooms I can go ahead and delete them and I can also go ahead and take a look at the options the the room settings here as well I’ll go ahead and open these rooms so my rooms are open now and well I have one room open because Megan and Patty were in the same room so I could do a few things here one of the nice features is I can make an announcement and so that I don’t have to pop into each room individually to to speak with everyone I can go ahead and just send a quick announcement here maybe I’ll say five minutes remaining and this will broadcast that message to all of the rooms here so we’ve sent your announcement to all rooms here as well okay so at this point I’m just kind of waiting for the rooms we did set a time limit of 15 minutes as well for the purposes of this demo we’ll go ahead and just close the room I’ll click on the more options next to room two and I’ll go ahead and close that room I’ll wait for the room to close and everyone to return here to the main session so my rooms have closed everyone is back here in the main session and uh at this point what I want to do is go ahead and actually share my screen so I’ll go ahead and click on the share icon here notice the shortcut key to share content is control shift plus e I’ll go ahead and click on share and uh we do have this present mode here we we have different types of presentations that we can use such as content only if our camera is turned on we can choose this layout where it kind of places us almost like augmented reality where it shows us and with our content behind us we have another layout where we’re kind of side by side and then we have kind of the news broadcast layout here as well so all these are available to us if we have our camera turned on so we have a few sections here if you have more one screen your screens will show up here so I can go ahead and share a screen or I can go ahead and share a window I’m going to go ahead and share a window here and let’s see I have quite a few I want to go ahead and open up my presentation here and if I want to play audio I want to make sure that I have include computer sound turned on here not playing audio just want to go ahead and open up this PowerPoint slide here okay and so now I’m presenting right here I can go back to my meeting by clicking on the small icon down here as well I can stop sharing by clicking on the X I do have my menu kind of up here at the top I’ll go back here there it is okay so I can give control to someone else if I want to I can stop presenting I can pin this bar so that it stays here so so that I can always see it if I turn on my camera I can switch to one of these other present views here as well going to go ahead and stop presenting and this will bring me back here to my main window if I want to share something else here I’ll go back to my share content and one of the features here is the Microsoft whiteboard and if I click on my whiteboard here will open up my whiteboard for me so here’s my whiteboard I’m going to go ahead and maximize my screen actually there we go and so from my whiteboard I can do a few things here notice I have my writing instruments here I have my Eraser my highlighter and as we just kind of mouse over these it kind of gives us some information as to what they are here’s my lasso that I can use to select anything that I’ve kind of marked up and the ruler says it’s coming soon so I can drop notes on here different types here I can have a note Grid or I can just simply drop a yellow note so kind of like a sticky so my sticky note and once I have that here on my whiteboard I can move my whiteboard around just by clicking on an empty space just kind of dragging things around here as well do I have my zoom controls down here in the bottom so I can zoom out or I can zoom in right so I can just go ahead and interact with this here as well now my attendees can actually mark this up as well so they do have the capability to go ahead and add some notes on here or maybe add a note grid I’ll go ahead and make use of the pen here and so the pen does give you some kind of Correction as you’re actually writing we’ll go ahead and try to reset that there we can change the size the color of that nature as well so I’m going to go ahead and close this pen window here and go ahead and click on here’s so here’s the inking and if I want to add some other things here I can such as text I can drop a text box right onto my canvas and then if I want to add some shapes I have various shapes that I can use here as well all right and if I go back there’s also some templates in here that we can use so there are a lot of built-in templates in here so for example such as brainstorming we have an affinity diagram a brainstorm we can drop this on here if we want to okay we have a topic brainstorm so we can brainstorm various topics with our team so we can do that as well so I’ll go ahead and delete these here here from my canvas and we’ll wrap up by just dropping in this topic brainstorm here I just need to go ahead and place it here and once it’s done I’ll do my best to kind of resize things here and this will give everyone an opportunity to go ahead and interact we can enter our topics and we can enter any brainstorming ideas in each of these topic columns here as well so very nice tool that Microsoft has provided for us various activities I challenge you to go ahead and just kind of explore all these different options here okay from brainstorming problem solving design all the way down to learning take a look at these and see if any of these will be helpful for your meeting once I’m done if I go ahead and click on the gear icon here I can export this as an image if I want to I can go ahead and actually open this in a separate window in the actual app if I want to and as always if I want my participants to be able to edit this I can go ahead and check this off here as well so go ahead and pause this video we covered quite a few here go ahead and launch that meeting that you scheduled and go ahead and take a look at the different tools that you have available to you to just kind of manage your meeting and your attendees open up that breakout room and play around with those breakout rooms as well well share your screen take a look at the different sharing options and go ahead and share that whiteboard and then come right back welcome back we covered quite a bit there when we started our meeting such as the overview of the meeting tools for our attendees presenting our screen the breakout rooms and the Whiteboard activity as well so now we want to go ahead and wrap up and see what teams has recorded for us and now that our meeting is over one of the things that we want to take a look at is the attendance here there are a few ways that we can do that I’ll go back to my channel here and so here we have this extensive report just based on our meeting so here are some of the files that we shared in the chat earlier we can see that the recording was started a form was shared and here is the attendance report we can actually go ahead and click on the attendance report right here it will open in an Excel sheet we can go ahead and take a look at that as well and if we go down a little further we can see that the meeting was recorded so we can play back the meeting right here on the more options we can open it or we can get a link here for it as well so I’ll click on the attendance report I’ll go ahead and save that maybe to my downloads folder here and once that’s ready I’ll go ahead and open that up another thing that I can do is I can go back to the meeting here to the meeting options I’ll click on view meeting details and once I’m here I can actually click on the attendance and if I just click on the appropriate meeting here here we can see all of our attendees when they joined when they left the meeting duration and their role as well so we don’t necessarily need to open the Excel file we can actually just take a look here and get all of our data we can also download our data from right here as well but let me go ahead and grab that Excel file so this is what the Excel file looks like okay just kind of move things around here a little bit and I’ll Auto expand all of these columns here okay so kind of the same information here the title of the meeting the start time the end time even the meeting ID and all of our attendees here as well so very nice if you want to have that you can share that or print that or distribute that as necessary and so it’s pretty cool right we’re able to just get a nice recap of our meeting notice that when we come back to our Channel kind of condenses everything for us right here if we want more details we can just click on the little icon here for replies and we can get a nice summary and overview of that as well so go ahead and pause the video and come back to the channel and observe some of the reporting that was provided by Microsoft teams here some of them will be very very useful especially going forward when you are scheduling future meetings so go ahead and pause the video visit the channel take a and see what was reported and come right back welcome back and congratulations on completing our course on Microsoft teams for trainers hopefully you’re more prepared and you’re more confident with scheduling meetings and conducting meetings in the future as well just a quick recap here we scheduled a meeting and we took a look at some of the meeting options and we’re able to create the breakout rooms ahead of time once the meeting was scheduled we’re able to use the chat space to share files and create a poll in the form of a link that we were able to use later on in the actual meeting we conducted a test call to make sure that our audio and video checked out and our microphone checked out as well and then we had a quick run through a quick meeting using the meet Now command on the top right of our Channel and we took a look at some of the host tools that we would need when we’re conducting our meeting we started a meeting and we notified our attendees of some of the common tools that they will need such as raising their hand or muting or unmuting themselves we’re able to present our screen we’re able to open our breakout rooms and close them and actually broadcast a message to the breakout rooms as well we had a preview of the Whiteboard feature that’s available in Microsoft teams and once the meeting was over we’re able to download the attendance take a look at it and we were able to look at the report that Microsoft teams created for US based on our meeting and we’re able to see that the meeting was recorded and available right there in our Channel space as well so congratulations on completing this course and I look forward to seeing all of you in a future learn it course have a wonderful day thanks for watching don’t forget we also offer live classes and office applications professional development and private training visit learn it.com for more details please remember to like And subscribe and let us know your thoughts in the comments thank you for choosing learn it [Music]

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog

  • Madaras Registration, Government Policy, and the Path Forward by Mufti Tariq Masood – Study Notes

    Madaras Registration, Government Policy, and the Path Forward by Mufti Tariq Masood – Study Notes

    Mufti Tariq Masood’s podcast discusses a controversy surrounding a bill passed in Pakistan’s Senate and Assembly concerning the regulation of madrasas (religious schools). The central conflict involves differing opinions among prominent religious scholars, particularly regarding the involvement of Jamaat-e-Rasheed and Maulana Fazlur Rehman, on whether madrasas should come under the Ministry of Education. The podcast features Masood expressing his neutral stance while addressing concerns raised by various parties, including the potential loss of autonomy for madrasas and the fairness of the government’s actions. Masood presents arguments from both sides, highlighting the complexities of the issue and the strong emotions it evokes. He concludes by calling for unity among religious scholars and a resolution that respects the rights of all stakeholders.

    Pakistan’s Madaris: A Conflict of Control

    This study guide will focus on the key topics and figures discussed in the provided sources, which primarily consist of a podcast transcript discussing a conflict within the Islamic community regarding the management of Madaris (religious schools) in Pakistan.

    Key Topics

    • The 2019 Agreement: A central point of discussion is a 2019 agreement regarding the registration and management of Madaris [1]. This agreement involved the government and various Ulama (religious scholars) [2].
    • The agreement stipulated that Madaris would be brought under the purview of Wizarat Talim (Ministry of Education) [1, 2].
    • Key aspects of the agreement included the registration of Madaris, the opening of bank accounts, and the issuance of visas for foreign students [2, 3].
    • There is debate as to whether the government fulfilled its obligations under this agreement, particularly concerning the opening of bank accounts and the issuance of visas for foreign students [3, 4].
    • The Society Act: A new bill was passed under the Society Act which would have brought Madaris under a different regulatory framework [5, 6]. This is viewed as a reversal of the 2019 agreement.
    • This bill was passed by the Assembly and Senate [6, 7].
    • The bill would require Madaris to register under the Society Act, with a one-month period for existing Madaris and a one-year period for new ones [6].
    • The bill was passed without consulting all stakeholders, leading to the current conflict [8, 9].
    • Wizarat Talim vs. Wizarat Dakhla: A major point of contention is whether Madaris should be under the control of the Ministry of Education (Wizarat Talim) or the Ministry of Interior (Wizarat Dakhla) [10].
    • Wizarat Talim is seen as a more favorable option by some because it facilitates registration within 7 days without requiring lawyer fees, and provides training and financial benefits to teachers [11-13].
    • Wizarat Dakhla is seen by some as a means of government control over Madaris, that can lead to arrests of foreign students and other issues [9, 12].
    • Accusations of being a “Darbari Mullah”: The term “Darbari Mullah” (courtier Mullah) is used to accuse religious figures of being too close to the government and acting in its interests rather than the interests of the community [14-16]. This is a key point of criticism made against some religious figures involved in the conflict [15, 17].
    • The Role of Ulama: The podcast discusses the differing opinions among various Ulama, particularly concerning the 2019 agreement and the Society Act [6, 7, 14, 16].
    • Hazrat Maulana Fazlur Rehman is a central figure, who introduced a bill that is now under scrutiny [8, 18].
    • Mufti Abdul Rahim Saheb is another significant figure, who is seen by some as being against the interests of the Madaris [7, 14].
    • Mufti Taqi Usmani Saheb is a highly respected scholar whose opinion is sought and valued by many [2, 16].
    • Other figures include Qari Hanif Jalandhari Saheb and Mufti Muneeb Rehman Saheb [2, 10].

    Key Figures

    • Mufti Tariq Masood: The host of the podcast, who aims to provide a neutral perspective on the conflict [7, 15]. He claims to be an employee of Jamat Rasheed while also maintaining a neutral stance [14].
    • Hazrat Maulana Fazlur Rehman: A political leader and religious figure who is seen as having a key role in the current conflict, he introduced the bill that has created the dispute [7, 8].
    • Mufti Abdul Rahim Saheb: A respected scholar who is seen as a key figure in the dispute, criticized by some for his stance on the Madaris and for his perceived closeness with Jam Rashid [7, 14, 15].
    • Mufti Taqi Usmani Saheb: A highly respected and influential scholar whose opinion is valued by many [2, 16].
    • Usman Yusuf Saheb: A representative of Jamat Rasheed, who is interviewed by Mufti Tariq Masood in the podcast [14, 15].
    • Qari Hanif Jalandhari Saheb: A religious scholar who was involved in the 2010 agreement and the 2019 agreement with the government [1, 2, 10].
    • Mufti Muneeb Rehman Saheb: A religious scholar who was involved in the 2019 agreement [2, 10].

    Core Conflicts and Issues

    • Disagreement on the management of Madaris: The central conflict is about which ministry should control the Madaris. The 2019 agreement placed them under Wizarat Talim while a new bill under the Society Act would make that impossible [1, 5, 10].
    • Lack of consultation: The bill that was passed under the Society Act did not involve full consultation with all the Madaris and their representatives, leading to a backlash [6, 8].
    • Accusations of government influence: Some religious figures are accused of being too close to the government and promoting its interests over those of the Madaris [5, 14, 16, 17].
    • Question of the legal status of the 2019 agreement: Some argue that the 2019 agreement was merely a “piece of paper” and not a legally binding document, while others contend that it is still valid [4, 19].
    • Concerns about government control over Madaris: There are concerns that bringing Madaris under government control will result in a loss of independence and influence on curriculum and hiring decisions [12, 17].
    • Conflicting viewpoints within the Ulama: The Ulama are not united in their stance on these issues, which further complicates the situation [7, 14, 16].

    Areas for Further Study

    • The specific content of the 2019 agreement and the Society Act bill.
    • The historical context of the relationship between the government and Madaris in Pakistan.
    • The different viewpoints and affiliations of the various Ulama involved in the conflict.
    • The implications of Madaris being under the control of either Wizarat Talim or Wizarat Dakhla.
    • The role of political influence and motivations in this conflict.
    • The specific procedures for registration of Madaris under both systems.
    • The role and function of Wifa Kul Madaris Al Arabia [20].
    • The potential benefits and drawbacks of each system for Madaris and their students [12, 17].

    By examining these key topics, figures, and conflicts, one can gain a better understanding of the complex issues surrounding the management of Madaris in Pakistan. It is also important to note the podcast host is trying to remain neutral and is presenting different points of view. This is not a simple issue and does not have a simple answer.

    Madaris Management Conflict in Pakistan

    Okay, here is a briefing document based on the provided sources and our conversation history, focusing on the key issues surrounding the management of Madaris in Pakistan:

    Briefing Document: Madaris Management Conflict in Pakistan

    Background: This document provides a briefing on the ongoing conflict concerning the management of Madaris (religious schools) in Pakistan, drawing from a podcast transcript [1-3]. The conflict primarily revolves around a 2019 agreement between the government and various Ulama (religious scholars) and a subsequent bill passed under the Society Act, which is seen as a reversal of that agreement [4-6].

    Key Issues:

    • The 2019 Agreement:This agreement stipulated that Madaris would be brought under the control of Wizarat Talim (Ministry of Education) [4].
    • It included provisions for the registration of Madaris, opening bank accounts, and issuing visas for foreign students [7, 8].
    • There are conflicting views about whether the government fulfilled its obligations under the agreement [8, 9]. Some argue that accounts were not opened for all Madaris, while others claim that the agreement was fulfilled and that benefits were given to Madaris [8, 10].
    • The legal status of the agreement is also debated, with some considering it a mere “piece of paper” [5, 11], while others view it as a valid and binding contract [12].
    • The Society Act Bill:A new bill was passed under the Society Act, which would place Madaris under a different regulatory framework [5, 6].
    • This bill was passed without consulting all stakeholders, leading to the current conflict [6, 13].
    • The bill requires existing Madaris to register within one month, and new Madaris within one year [6].
    • This is seen as undermining the 2019 agreement and reversing the progress made under it [14, 15].
    • Wizarat Talim vs. Wizarat Dakhla:A major point of contention is whether Madaris should be under the Ministry of Education (Wizarat Talim) or the Ministry of Interior (Wizarat Dakhla) [4].
    • Wizarat Talim is favored by some because it facilitates registration quickly (within 7 days) and without requiring lawyer fees. Additionally it provides training and financial benefits to teachers [16, 17].
    • Wizarat Dakhla is seen by others as a potential means of government control over Madaris. This can lead to problems such as arrests of foreign students and other issues [14].
    • Accusations of being a “Darbari Mullah”:The term “Darbari Mullah” (courtier Mullah) is used to accuse religious figures of being too close to the government and acting in its interests [3, 18].
    • This accusation is leveled against figures perceived to be supporting the Society Act bill or who are seen as too closely aligned with Jam Rashid [3, 9].
    • Differing Opinions Among Ulama:The Ulama are not united on these issues [19, 20].
    • Hazrat Maulana Fazlur Rehman is a key figure who introduced the bill under scrutiny [6, 13].
    • Mufti Abdul Rahim Saheb is seen as a significant figure in the dispute, with some accusing him of working against the interests of Madaris and for being too closely aligned with Jam Rashid [2, 9, 21].
    • Mufti Taqi Usmani Saheb is a highly respected scholar whose opinion is valued by many and who is seen as a neutral figure [19, 22, 23].

    Key Figures:

    • Mufti Tariq Masood: The podcast host who aims to present a neutral view on the conflict. He is an employee of Jamat Rasheed but claims to maintain a neutral stance [1-3].
    • Hazrat Maulana Fazlur Rehman: A political and religious leader who introduced the bill that is the center of the dispute [1, 4, 13, 24].
    • Mufti Abdul Rahim Saheb: A respected scholar criticized for his stance on the Madaris issue, and for his perceived closeness to Jam Rashid [1-3, 9, 21].
    • Mufti Taqi Usmani Saheb: A highly respected and influential scholar [7, 19, 22, 23].
    • Usman Yusuf Saheb: A representative of Jamat Rasheed, interviewed by Mufti Tariq Masood [2, 3].

    Core Conflicts:

    • Disagreement on which ministry should control Madaris.
    • Lack of consultation with all stakeholders when the Society Act bill was passed.
    • Accusations of some religious figures being too closely aligned with the government.
    • Debates about the legal status of the 2019 agreement.
    • Concerns that government control will result in a loss of Madaris’ independence and the ability to control curriculum and hiring decisions [18].
    • Differing viewpoints among the Ulama [19, 20].

    Potential Solutions:

    • The podcast host suggests that Madaris should be allowed to choose whether they want to register under Wizarat Talim or the Society Act [25].
    • There is a proposal that those who want to remain under Wizarat Talim should be allowed to do so, while those who want to go to Wizarat Dakhla should be allowed to go there as well [25].
    • The importance of unity among the Ulama to avoid further conflict is emphasized [26].

    Analysis: The conflict is complex, with a mix of legal, political, and religious considerations. It is also important to note the podcast host is trying to remain neutral and is presenting different points of view. This is not a simple issue and does not have a simple answer. The differing opinions among the Ulama further complicate the situation. There is a clear desire to resolve the issues peacefully and to ensure the independence and well-being of Madaris and their students.

    Pakistan’s Madaris Management Conflict: A Comprehensive FAQ

    Okay, here’s an FAQ based on the provided sources and our conversation history, addressing common questions about the Madaris management conflict in Pakistan:

    Frequently Asked Questions: Madaris Management Conflict

    Q: What is the main issue of the Madaris conflict?

    • The core issue is a disagreement over the management of Madaris (religious schools) in Pakistan. This conflict arose due to the passing of a bill under the Society Act that is seen as undermining the 2019 agreement between the government and various Ulama [1, 2]. The 2019 agreement stipulated that Madaris would come under the control of Wizarat Talim (Ministry of Education) but the Society Act could move them to a different regulatory framework [2, 3].

    Q: What was the 2019 agreement about?

    • The 2019 agreement was a significant accord between the government and Ulama [3, 4]. It stated that Madaris would be registered under Wizarat Talim and would receive benefits, including:
    • Registration of Madaris [4]
    • Opening of bank accounts for Madaris [5]
    • Issuance of visas for foreign students [5, 6]
    • The agreement aimed to bring Madaris into the formal education system and provide them with necessary facilities [4, 5].

    Q: What is the Society Act and why is it controversial?

    • The Society Act is a new bill that was passed by the Assembly and Senate [1, 7]. It is controversial because:
    • It requires Madaris to register under a different regulatory framework, potentially reversing the 2019 agreement [2].
    • It was passed without consulting all stakeholders, leading to opposition from some Madaris and Ulama [8].
    • It is seen by some as a move by the government to exert more control over Madaris [2].

    Q: What is the difference between Wizarat Talim and Wizarat Dakhla?

    • The conflict revolves around whether Madaris should be managed by Wizarat Talim (Ministry of Education) or Wizarat Dakhla (Ministry of Interior) [3].
    • Wizarat Talim is favored by some because it offers quick registration (within 7 days) without lawyer fees and provides training and financial benefits to teachers [9, 10].
    • Wizarat Dakhla is viewed by others as a means for the government to exert more control over Madaris, which may lead to arrests of foreign students and other issues [10, 11].

    Q: What is a “Darbari Mullah”?

    • “Darbari Mullah” (courtier Mullah) is a term used to accuse religious figures of being too closely aligned with the government [12, 13]. These figures are seen as promoting the government’s interests over the interests of the Madaris and the community [14, 15].

    Q: Who are the key figures involved in this conflict?

    • Key figures include:
    • Mufti Tariq Masood: The podcast host, who tries to remain neutral. [1]
    • Hazrat Maulana Fazlur Rehman: A political and religious leader who introduced the bill under the Society Act [1, 3].
    • Mufti Abdul Rahim Saheb: A respected scholar criticized for his perceived closeness to Jam Rashid and for his stance on the Madaris issue [16, 17].
    • Mufti Taqi Usmani Saheb: A highly respected and influential scholar who is seen as a neutral figure [5, 13].
    • Usman Yusuf Saheb: A representative of Jamat Rasheed, who is interviewed in the podcast [12].
    • Qari Hanif Jalandhari Saheb: A religious scholar involved in the 2010 and 2019 agreements [3].
    • Mufti Muneeb Rehman Saheb: A religious scholar involved in the 2019 agreement [3, 5].

    Q: Why are some Ulama against the Society Act?

    • Some Ulama oppose the Society Act because:
    • They feel it undermines the 2019 agreement [7, 18].
    • They were not consulted before the bill was passed [8].
    • They believe it will lead to greater government control over Madaris [19, 20].
    • They fear it will compromise the independence of Madaris and their ability to control curriculum and hiring decisions [19].

    Q: What are the benefits of being under Wizarat Talim?

    • The benefits of being under Wizarat Talim include:
    • Faster registration: Registration can be completed in 7 days [19]
    • No lawyer fees: Madaris do not need to pay lawyer fees [21]
    • Financial support for teachers: Training and financial assistance is provided to teachers [11]
    • Assistance for foreign students: Visas and NOCs (No Objection Certificates) are facilitated for foreign students [19]

    Q: What is the proposed solution to this conflict?

    • The podcast host suggests that Madaris should be allowed to choose whether they want to register under Wizarat Talim or the Society Act [22]. The proposed solution includes:
    • Allowing Madaris that want to remain under Wizarat Talim to do so [22].
    • Allowing Madaris that want to go to Wizarat Dakhla to do so [22].
    • Emphasizing the need for unity among the Ulama to resolve the conflict peacefully [23].

    Q: What is the significance of the 2019 agreement?

    • The 2019 agreement is seen as:
    • A crucial step toward formalizing the status of Madaris [4].
    • An agreement that would benefit Madaris by providing access to resources and facilities [4].
    • A point of contention, as some argue that it was never fully implemented and that it was merely a “piece of paper” [9, 18, 24].
    • A basis for claims that the government and some religious leaders are not acting in good faith [25].

    Q: What are the potential consequences of this conflict?

    • Potential consequences include:
    • A disruption to the education of Madaris students [26, 27].
    • Increased government control over Madaris [19, 20].
    • A loss of independence for Madaris [19, 20].
    • Further division among the Ulama and within the Islamic community [13, 28].

    This FAQ should provide a comprehensive overview of the Madaris management conflict based on the provided sources and our conversation history.

    Madaris Management Conflict Timeline

    Okay, here is a timeline of the key events related to the Madaris management conflict, based on the provided sources and our conversation history:

    Timeline of Madaris Management Conflict:

    • 2005: Initial discussions and disagreements about the management of Madaris begin [1].
    • 2010:A significant agreement is signed between Madaris and Rehman Malik Sahab, who was the Wazir at the time [1].
    • This agreement, signed by Qari Hanif Jalandhari Saheb and Mufti Munib Saheb among others, aimed to bring Madaris under Wizarat Talim (Ministry of Education) and move them away from traditional education [1].
    • The agreement was not fully implemented and faced obstacles [2].
    • 2010-2019: The issue of Madaris registration remains deadlocked [2].
    • 2017: Efforts to resolve the Madaris issue gain momentum during the PMLN government [2].
    • August 29, 2019:A new agreement is signed between the government of Pakistan, Ittehad Tanji Maa Ban Ji of Maat Madaris, and Shafqat Mahmood Saheb, who was Wazire Talim at the time [2].
    • This agreement included the registration of Madaris, opening bank accounts, and issuing visas for foreign students [3].
    • Mufti Taqi Usmani Saheb, Mufti Muneeb Rehman Saheb, and other religious leaders were part of this agreement [3].
    • This agreement stipulated that Madaris would be under Wizarat Talim [3].
    • It is stated that Jam Rashid was part of Vifa at the time but did not have the power to make decisions regarding the agreement [2].
    • Post-2019:Some Madaris are registered under Wizarat Talim, with around 4500 being registered under the agreement [4].
    • Disagreements arise about the implementation of the agreement, with some claiming that bank accounts were not opened for all Madaris, and that the government did not fulfill its promises [4, 5].
    • Jam Rashid took advantage of the situation to register their own degree-awarding institute [6].
    • Recent Events (Time not specified, but after 2019):Hazrat Maulana Fazlur Rehman introduces a bill under the Society Act [7].
    • The bill is passed unanimously by the Assembly and the Senate [8, 9].
    • This bill is controversial as it is seen as reversing the 2019 agreement and placing Madaris under a different regulatory framework [7].
    • The bill was passed without consulting all stakeholders including Madaris leaders, leading to the current conflict [9].
    • The bill would require existing Madaris to register under the Society Act within a month and new ones within a year [9].
    • Mufti Abdul Rahim Saheb comes out against the bill on the media [1].
    • Accusations of being a “Darbari Mullah” (courtier Mullah) begin against those who are perceived to support the bill [6, 8, 10].
    • The issue of whether Madaris should be under Wizarat Talim or Wizarat Dakhla (Ministry of Interior) becomes a central point of contention [1, 11].
    • A podcast featuring Mufti Tariq Masood is produced to discuss the issue and attempt to remain neutral [8].
    • The podcast host argues that Madaris should be allowed to choose whether they want to register under Wizarat Talim or the Society Act [12].

    This timeline highlights the key moments in the ongoing conflict, from the initial agreements to the recent controversies. The timeline makes clear the major points of contention and how the current issues emerged from past agreements and disagreements.

    Fractured Faith: Divisions Within the Ulama

    The sources reveal significant challenges to Ulama unity, particularly regarding the management of Madaris and differing views on government engagement [1-3]. Here’s a breakdown of the complexities:

    • Divisions over Madaris Management: A central issue causing disunity is the disagreement over whether Madaris should be under Wizarat Talim (Ministry of Education) or Wizarat Dakhla (Ministry of Interior) [4].
    • Some Ulama, like Hazrat Maulana Fazlur Rehman, have supported a bill under the Society Act, which could move Madaris from the Education Ministry to a different regulatory framework, potentially reversing the 2019 agreement. This move is seen as a betrayal by some and a major source of division among the Ulama [5-7].
    • Other Ulama, like those aligned with Mufti Abdul Rahim Saheb, oppose this bill and feel it undermines the agreements and autonomy of Madaris [1-3].
    • Accusations of Being a “Darbari Mullah”: The term “Darbari Mullah” (courtier Mullah) is frequently used to criticize religious figures perceived as too close to the government [3, 8, 9].
    • This accusation is levied against those seen as supporting government policies over the interests of the Madaris and the wider community, further deepening the divide among Ulama [3, 9].
    • The podcast host, Mufti Tariq Masood, attempts to remain neutral, highlighting the complexity of the situation and the difficulty in achieving unity when some Ulama are accused of being government stooges [1-3].
    • Differing Interpretations of Agreements: There are disagreements over the interpretation and implementation of the 2019 agreement [4, 5, 10, 11].
    • Some Ulama argue the agreement was a crucial step for formalizing Madaris, while others see it as a mere “piece of paper” that was never fully implemented [11, 12].
    • This difference in interpretation is a significant point of contention and prevents a unified approach to the issue of Madaris management [11, 12].
    • Conflicting Loyalties and Personal Relationships: The sources indicate that personal loyalties and relationships also play a role in the disunity among the Ulama [13-15].
    • Some Ulama prioritize their personal relationships with influential figures, such as their peers or Murshids, over a unified stance on the issue [2, 13, 14].
    • For example, while Mufti Taqi Usmani Saheb is a highly respected figure, even those who admire him may disagree with him based on their allegiance to another respected figure like Mufti Abdul Rahim Saheb [13].
    • Lack of Consultation: The sources suggest that a major reason for disunity is the lack of consultation with all stakeholders before decisions are made [6, 7].
    • The Society Act bill was passed without consulting all the Madaris leaders and stakeholders, creating a sense of betrayal and leading to opposition [6, 7].
    • This lack of consultation undermines trust among the Ulama and contributes to their disunity [7].
    • The Quest for a Solution: Despite the disunity, there are calls for the Ulama to unite and find a solution [16, 17].
    • The podcast host proposes a solution that would allow Madaris to choose whether they want to register under Wizarat Talim or the Society Act, accommodating different preferences and hopefully bridging the divide [16].
    • There is a plea for unity, emphasizing that internal fighting among the Ulama will weaken their collective position [17].

    In conclusion, the sources reveal that Ulama unity is severely challenged due to conflicting views on Madaris management, accusations of government alignment, varying interpretations of agreements, conflicting loyalties, lack of consultation, and a host of other factors. The path to unity remains complex, with calls for mutual respect and understanding in the midst of deeply entrenched disagreements.

    Madaris Registration in Pakistan: A Contentious Issue

    The sources discuss Madaris registration as a complex and contentious issue, with multiple perspectives and significant disagreements. Here’s an overview of the key points regarding Madaris registration, drawing from the sources and our conversation history:

    • 2019 Agreement: A major point of reference is the 2019 agreement between the government and Ittehad Tanji Maa Ban Ji of Maat Madaris [1]. This agreement aimed to register Madaris under the Wizarat Talim (Ministry of Education) [2].
    • This agreement was a significant breakthrough, with the intention of bringing Madaris into the formal education system [1, 3].
    • The agreement also included provisions for opening bank accounts for Madaris and issuing visas for foreign students [2].
    • However, the implementation of this agreement is disputed, with some claiming that not all Madaris received bank accounts and foreign student visas as promised [4].
    • The Society Act Bill: A more recent development is the introduction of a bill under the Society Act, which has caused considerable controversy [5, 6].
    • This bill is seen by some as an attempt to reverse the 2019 agreement and place Madaris under a different regulatory framework, potentially under the Wizarat Dakhla (Ministry of Interior) [5].
    • This bill was passed without consulting all stakeholders which has lead to major disagreements [7].
    • The bill stipulates that existing Madaris must register under the Society Act within a month and new Madaris within a year [6].
    • This bill has created significant conflict among the Ulama, with some opposing it vehemently and others seeming to support it [8].
    • Wizarat Talim vs. Society Act: A core issue is the debate over whether Madaris should be registered under Wizarat Talim or the Society Act [9].
    • Those in favor of Wizarat Talim argue it provides a more suitable framework for education and aligns with the 2019 agreement.
    • They also state that the Wizarat Talim provides easier access to resources and recognition for Madaris [10].
    • Those in favor of the Society Act argue that it provides more autonomy and reduces the government’s control over Madaris [5].
    • Those who are against the Society Act and support Wizarat Talim view the Society Act as an encroachment on their rights [11].
    • Registration Challenges: The sources highlight the difficulties Madaris face in the registration process [10].
    • Registering under the Society Act is described as complex, requiring fees, lawyers, and clearances from multiple agencies, which is particularly burdensome for smaller Madaris [12].
    • Registration under Wizarat Talim is presented as a more streamlined process, with registration possible within 7 days and without the need for legal assistance or fees [10].
    • The lack of proper registration can lead to various problems including difficulties in opening bank accounts [4] and obtaining visas for foreign students [13].
    • Accusations of Government Influence: The debate over registration is also tied to concerns about government influence over Madaris [7, 14].
    • Some argue that registering under the Society Act or Wizarat Dakhla would lead to greater government control over Madaris’ curriculum and operations [14, 15].
    • On the other hand, registering under Wizarat Talim is seen by some as a way to secure funding and support for Madaris.
    • The lack of clarity on this issue has led to accusations of some Ulama being “Darbari Mullahs” and collaborating with the government, further deepening the conflict [16, 17].
    • Differing Views within Madaris: It is also important to note that not all Madaris share the same view regarding registration [7].
    • Some Madaris are keen to be under Wizarat Talim, while others prefer to remain independent or under different frameworks [7, 18].
    • There is a concern that forcing all Madaris to register under one system ignores their individual preferences and needs [7].
    • Proposed Solutions: A proposed solution is to allow Madaris to choose whether to register under Wizarat Talim or under the Society Act, respecting their autonomy and addressing different needs [19].
    • This solution aims to prevent the imposition of a single system that is not acceptable to all Madaris, and to reduce the conflict [19].
    • It also aims to honor the previous agreements while accommodating the legitimate concerns about government interference [20].

    In conclusion, Madaris registration is a multifaceted issue with deep historical roots, and current debates are tied to power dynamics, differing opinions about autonomy, and the implementation of past agreements. The key point is that there is no simple answer and that a solution must address the legitimate needs and concerns of all stakeholders.

    Government Policies and Madaris in Pakistan

    Government policies, as depicted in the sources, are a major source of contention and division, particularly regarding the regulation and oversight of Madaris [1-41]. Here’s a breakdown of the key government policies discussed and their implications:

    • The 2019 Agreement: A significant policy is the 2019 agreement between the government and Ittehad Tanji Maa Ban Ji of Maat Madaris, which aimed to bring Madaris under the purview of Wizarat Talim (Ministry of Education) [4-6].
    • This agreement was intended to formalize the Madaris system, providing avenues for registration, opening bank accounts, and facilitating visas for foreign students [6, 8].
    • However, there are differing interpretations regarding the implementation of this agreement, with some claiming that the government failed to fulfill its promises, leading to distrust [7-9].
    • Some Ulama feel that the government did not fully implement the agreement’s provisions which has led to significant tension and disagreement about the government’s intentions [7, 8].
    • The Society Act Bill: A more recent government policy is the introduction of a bill under the Society Act, which is seen by some as a reversal of the 2019 agreement and a source of conflict [4, 11-13].
    • This bill proposes to move Madaris from the Ministry of Education to a different regulatory framework, potentially under the Ministry of Interior or other government bodies [11, 12].
    • This has led to considerable opposition from some Ulama who feel it undermines their autonomy and control over Madaris [1, 11, 13, 16, 17].
    • The bill was passed without proper consultation with all stakeholders which has further deepened the divide and created distrust in the government’s motives [1, 11, 13, 16, 17].
    • Government Influence and Control: Concerns about government control and influence over Madaris are central to the debates [28-30].
    • Some Ulama fear that the government is trying to exert too much control over the curriculum, finances, and overall management of Madaris [27-30].
    • Accusations of some Ulama being “Darbari Mullahs” (courtier Mullahs) who are too close to the government have further complicated the situation [2, 3, 7, 10, 12, 28, 39].
    • The fear that the government will use these policies to influence the religious teachings and values of Madaris is a major cause for concern [27-30].
    • Registration and Bureaucracy: The sources highlight the bureaucratic hurdles and challenges faced by Madaris during the registration process [25-28].
    • Registering under the Society Act is described as a complex and time-consuming process, involving legal fees and clearances from multiple agencies [25-27].
    • In contrast, registration under Wizarat Talim is portrayed as a more straightforward and efficient process [25, 26].
    • The issues around registration are presented as a way for the government to control and impose conditions on Madaris [27-29].
    • Differing Views Within the Government: The sources also show that there are differing views within the government itself, which adds complexity to the situation.
    • Some government officials may genuinely want to facilitate Madaris and bring them into the formal education system, while others may be more interested in control [1, 12, 13, 17-19].
    • The policies are sometimes influenced by political considerations rather than educational goals [17-19, 39, 40].
    • The podcast suggests that some government entities have been more supportive of the 2019 agreement, while others seem to favor the Society Act, leading to inconsistencies in implementation [4-6].
    • Impact on Madaris: The government’s policies directly impact the functioning and future of Madaris [11, 13, 27, 28].
    • The debates around registration, government control, and curriculum development create an uncertain future for Madaris, making it difficult for them to plan and operate effectively [27-29].
    • The policies are not just about registration but also about the very identity and purpose of Madaris, making them a highly contentious issue [27-30].
    • Proposed Solutions: There are calls for the government to engage with all stakeholders and find a solution that addresses the concerns of all parties [1, 11, 13, 17-19, 31, 40].
    • A proposed solution is to allow Madaris to choose whether they want to register under Wizarat Talim or the Society Act, respecting their autonomy and addressing their different needs [1, 40].
    • It is also suggested that the government should focus on facilitating and supporting Madaris rather than controlling them, building trust and reducing conflict [1, 40].

    In conclusion, government policies, particularly regarding the registration and oversight of Madaris, are a major source of tension and division. The government’s actions, the lack of consultation with stakeholders, and varying interpretations of past agreements have contributed to the complex situation. The sources reveal a need for more inclusive and respectful dialogue to find a solution that accommodates the diverse needs and perspectives of all stakeholders.

    Jamaat Rasheed and the Madaris Controversy

    Jamaat Rasheed is a significant entity within the context of the Madaris (religious schools) and the controversies surrounding their registration and governance, as detailed in the sources. Here’s a comprehensive breakdown of Jamaat Rasheed, incorporating the information from the sources and our conversation history:

    • Position and Affiliation:
    • Jamaat Rasheed is a part of Wifaq-ul-Madaris Al-Arabia, though it doesn’t hold a leadership position within that organization [1].
    • The sources indicate that Jamaat Rasheed is sometimes seen as being aligned with the government, leading to accusations that it is a “Darbari Mullah” (courtier Mullah) organization [2, 3].
    • There are allegations that Jamaat Rasheed follows a different policy than other Ulama (religious scholars) and is not part of the Ulama’s unity [4].
    • Despite this, the sources note that Jamaat Rasheed has been part of the Madaris system for 30 years [4].
    • Role in Madaris Registration:
    • Jamaat Rasheed has been involved in the Madaris registration process and is seen as having taken advantage of the situation to get its own institutions registered [5].
    • It has been noted that Jamaat Rasheed itself has a degree-awarding institute and a proper Viva Board [5].
    • Some sources note that Jamaat Rasheed registered under Wizarat Talim (Ministry of Education) as a degree awarding institute [5].
    • There are claims that Jamaat Rasheed was able to get its Madaris registered under Wizarat Talim when others were unable to [5].
    • Accusations and Controversies:
    • Jamaat Rasheed faces accusations of being a “courtier” or “establishment” entity, suggesting that it prioritizes government interests over the interests of the wider Madaris community [4, 5].
    • The sources also reveal that Jamaat Rasheed has been accused of benefiting from government policies while other Madaris have not, which further fuels the controversy [6].
    • Some believe that Jamaat Rasheed has been given undue favor by the government and accuse it of not representing the views of all Madaris [6].
    • It is noted that Jamat Rasheed does not have a say in the Shura Management, but one source states that his status was that of an employee of Jamat Rasheed [4].
    • Relationship with Other Ulama:
    • There are conflicting views among the Ulama about Jamaat Rasheed with some being critical of their policies and perceived alignment with the government [2, 4].
    • Some scholars have chosen to distance themselves from Jamaat Rasheed due to its perceived close ties with the government and their policies [3, 4].
    • The sources mention that some Ulama have turned against Jamaat Rasheed because they feel that it does not represent their interests [2, 4].
    • Mufti Abdul Rahim Saheb is also mentioned to have the same “scent” as Jam Rashid [4].
    • Views on Wizarat Talim and Society Act:
    • Jamaat Rasheed seems to have favored registration under Wizarat Talim as a way to streamline the registration process [5, 7].
    • They are also accused of seeking benefits and privileges under the Wizarat Talim system [5, 8].
    • The sources note that the issues with the Society Act is that it is more difficult and complex to register under it [8, 9].
    • Role in the Current Conflict:
    • Jamaat Rasheed’s actions and perceived alignment with the government are seen as contributing to the conflict between different factions of the Madaris system [2-4].
    • The sources portray Jamaat Rasheed as a divisive force, due to its history and perceived favoritism in its relationship with the government [4].
    • Criticisms of Jamaat Rasheed:
    • Jamaat Rasheed is criticized for not being aligned with the Ulama’s unity and accused of being a government puppet [2, 4].
    • They are also accused of exploiting the registration process for their benefit while disregarding the issues of other Madaris [5].
    • Some believe that Jamaat Rasheed’s involvement has complicated the Madaris registration issues further [4].
    • There are accusations that it is only concerned with its own interests [6].

    In summary, Jamaat Rasheed is a prominent entity within the Madaris system that has been embroiled in controversies regarding government policies and Madaris registration. They are often viewed with suspicion and accused of being too closely aligned with the government, which has made them a focal point in the ongoing conflict between different factions of the Ulama. The sources suggest that while they have been part of the system for a long time, they have also been a source of division and tension in the Madaris community.

    Mufti Abdul Rahim: A Profile

    Mufti Abdul Rahim is a significant figure in the context of the Madaris (religious schools) and the ongoing debates about their governance and registration, according to the sources. Here’s a detailed overview of Mufti Abdul Rahim’s role, views, and relationships, based on the information in the sources:

    • Position and Respect:
    • Mufti Abdul Rahim is a respected scholar, and is referred to as “Hazrat Mufti Abdul Rahim Saheb” [1, 2].
    • He is considered worthy of respect by various individuals in the sources [2].
    • Despite his respected status, he is also a point of contention in the debates, with some disagreeing with his stance and actions [1, 2].
    • Relationship with Jamaat Rasheed:
    • Mufti Abdul Rahim is said to have the same “scent” as Jamaat Rasheed, implying he is aligned with their policies [2].
    • This perceived alignment with Jamaat Rasheed is a point of criticism for some, who view Jamaat Rasheed as being too close to the government [1].
    • Despite this perceived alignment, one source mentions that he is also against them [2].
    • Opposition to Government Policies:
    • The sources indicate that Mufti Abdul Rahim has been critical of certain government policies, especially concerning the regulation of Madaris [1, 3].
    • He opposed a bill that was passed by the Assembly and Senate, and questioned why the government was given the right to implement it [1].
    • He is also noted to have come on media to discuss the issue of Madaris [3].
    • Conflict with Maulana Fazlur Rehman:
    • Mufti Abdul Rahim is portrayed as being in conflict with Maulana Fazlur Rehman, especially regarding the latter’s stance on government policies [1, 4].
    • Their disagreement is not just about policies but also about the broader direction of the Madaris system [1, 5].
    • It’s noted that Mufti Abdul Rahim came out against Maulana Fazlur Rehman’s bill [3].
    • One source indicates that during a speech Maulana Fazul Rehman criticized Mufti Abdul Rahim [1].
    • Views on Madaris Governance
    • Mufti Abdul Rahim emphasizes that Madaris should be independent of political interference and government control [6]
    • He believes that Madaris should maintain their autonomy and resist attempts by the government to exert undue influence over them [6]
    • He is concerned that government policies are aimed at controlling the curriculum and finances of Madaris [7].
    • Personal Conduct and Values:
    • Mufti Abdul Rahim is described as being a pious and principled individual who is more concerned about religious matters than worldly gains [8].
    • There is an anecdote in the sources where Mufti Abdul Rahim rejects a plot of land given to him, emphasizing that his children should not inherit any property, which indicates his detachment from material possessions [9].
    • The sources highlight that Mufti Abdul Rahim is strict in his training [10].
    • The sources indicate that Mufti Abdul Rahim is respected for his knowledge and piety [11].
    • Relationship with Mufti Taqi Usmani:
    • One of the sources highlights a comparison between Mufti Taqi Usmani and Mufti Abdul Rahim, noting that they are both respected scholars, but that Mufti Taqi Usmani’s views are being favored over Mufti Abdul Rahim’s views in the debate [12].
    • It is also mentioned that Mufti Abdul Rahim had tied the turban on Mufti Taqi Usmani [13].
    • Role in Turban Tying Ceremony:
    • Mufti Abdul Rahim is noted to have played a role in the turban-tying ceremonies of prominent figures in the Madaris system [11, 13].
    • This role in such ceremonies highlights his senior status and influence within the religious community [13].
    • Accusations and Criticisms
    • Despite his respected status, Mufti Abdul Rahim is not without his critics, as he is sometimes accused of being a “courtier Mullah”, suggesting he is too close to the government [1, 2].
    • There are also claims that he is influenced by passion or money, though these are refuted by the sources, which emphasize his integrity and piety [14].
    • He was also accused of being against the Ulama [2]
    • Advocacy for Madaris:
    • Mufti Abdul Rahim is shown to be advocating for the rights and autonomy of Madaris [15, 16].
    • He is particularly concerned about the challenges faced by smaller and less established Madaris [17].
    • He also believes that those who control and manage Madaris should have the right to decide their future [18].

    In summary, Mufti Abdul Rahim is portrayed as a complex figure who is highly respected within the Madaris community but also a point of conflict due to his views on government policies and his perceived alignment with Jamaat Rasheed. He is depicted as someone who values religious principles and autonomy, while also facing criticism for his views and actions. The sources show him to be a significant player in the ongoing debates, advocating for the rights and independence of Madaris.

    By Amjad Izhar
    Contact: amjad.izhar@gmail.com
    https://amjadizhar.blog