$(document).ready(function(){
    console.log("a2rp: an Ashish Ranjan presentation");

    // not working: why ???
    // const element = document.getElementById("container");
    // element.scrollTop = element.scrollHeight;
    // console.log(element.scrollHeight);

    $('html,body').animate({scrollTop: document.body.scrollHeight},"fast");

    // comments
    function program_1 () {
        console.log("this will be logged");
        // console.log("this will be commented");
        console.log("this will be logged again");
        /* console.log("this will be commented again"); */
        /*
        console.log("this will also be commented");
        */
    }
    program_1();
    // output:
    // this will be logged
    // this will be logged again

    console.log("\n");
    // variables
    // 8 types: undefined, null, boolean, string, symbol, bigint, number, object
    var var_undefined;
    console.log(typeof var_undefined); // undefined
    var var_null = null;
    console.log(typeof var_null); // object
    // In JavaScript null is "nothing". It is supposed to be something that doesn't exist.
    // Unfortunately, in JavaScript, the data type of null is an object.
    // We can consider it a bug in JavaScript that typeof null is an object. It should be null.
    var var_boolean = true;
    console.log(typeof var_boolean); // boolean
    var var_string = "a2rp: an Ashish Ranjan presentation";
    var $_var_string = "dollar variable";
    console.log(typeof var_string, typeof $_var_string); // string string
    var var_bigint1 = 99n;
    var var_bigint2 = BigInt(99);
    console.log(typeof var_bigint1,typeof var_bigint2); // bigint bigint
    var var_number = 22.7;
    console.log(typeof var_number); // number
    var var_object = new Date();
    console.log(typeof var_object); // object

    console.log("\n");
    // Assigning the Value of One Variable to Another
    var variable_1 = 22.7;
    var variable_2 = variable_1;
    console.log("variable_2 = ",variable_2); // variable_2 =  22.7

    console.log("\n");
    // javascript case sensitive variables
    var small_case_variable = true;
    var SMALL_CASE_VARIABLE = false;
    console.log(small_case_variable, SMALL_CASE_VARIABLE); // true false

    console.log("\n");
    // Differences Between the var and let Keywords
    var name = "Ashish";
    var name = "Ranjan";
    console.log("name:",name); // name: Ranjan
    let name1 = "Ashish";
    // Cannot redeclare block-scoped variable 'name1'.ts(2451)
    // let name1 = "Ranjan"; // Uncaught SyntaxError: Identifier 'name1' has already been declared

    console.log("\n");
    // Declare a Read-Only Variable with the const Keyword
    let mutable_var = 15;
    mutable_var = 20;
    console.log("mutable_var:",mutable_var); // mutable_var: 20

    const readonly_var = 25;
    // readonly_var = 30; // Uncaught TypeError: Assignment to constant variable. 

    console.log("\n");
    // add numbers
    let number_1 = 20;
    let number_2 = 20.12;
    let number_3 = number_1 + number_2;
    console.log(number_3); // 40.120000000000005

    console.log("\n");
    // subtratc numbers
    let subtract_number_1 = 20;
    let subtract_number_2 = 20.12;
    const subtract_result =  subtract_number_1 - subtract_number_2;
    console.log(subtract_result); // -0.120000000000001

    console.log("\n");
    // multiply two numbers
    const multiplied_numbers = 12 * 34; 
    console.log(multiplied_numbers); // 408

    console.log("\n");
    // divide numbers
    const divide = 23 / 2;
    console.log(divide); // 11.5

    console.log("\n");
    // icrement
    let i = 0, j = 0, k = 0;
    console.log(++i,j++,k+=1); // 1 0 1
    console.log(i,j,k); // 1 1 1

    console.log("\n");
    // decrement
    let a = 0, b = 0, c = 0;
    console.log(--a,b--,c-=1); // -1 0 -1
    console.log(a,b,c); // -1 -1 -1

    console.log("\n");
    // remainder
    let remainder_num1 = 33;
    let remainder_num2 = 10;
    console.log(remainder_num1%remainder_num2); // 3

    console.log("\n");
    // Compound Assignment With Augmented operation
    let compound_assignment_number = 17;
    console.log(compound_assignment_number+=7); // 24
    console.log(compound_assignment_number-=7); // 17
    console.log(compound_assignment_number*=7); // 119
    console.log(compound_assignment_number/=7); // 17

    console.log("\n");
    // escape sequences
    let before_escape_sequence_string = "a2rp: an Ashish Ranjan presentation";
    let after_escape_sequence_string = "\ba2r\fp: \nan Ashish R\tanj\van p\'rese\"ntati\\on";
    console.log(before_escape_sequence_string);
    console.log(after_escape_sequence_string);

});



html, body {
    font-family: Consolas, "Courier New", monospace; font-size: 10px;
}
pre {
    white-space: pre-wrap;       /* Since CSS 2.1 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
    background-color: #eee;
    padding: 15px;
    border-radius: 5px;
    display: inline-block;
}
ul li {
    margin: 5px;
}


<html>
<head>
    <title>a2rp</title>
    <link rel="stylesheet" href="styles.css">
    <script type="text/javascript" src="jQuery_v3.6.0.js"></script>
    <script type="text/javascript" src="scripts.js"></script>
</head>
<body>
<div id="container">
    <h3>javascript algorithms and data structures</h3>
    <hr />
    javascript comments
    <ul>
        <li>//</li>
        <li>/**/</li>
        <li>/*<br />*/</li>
    </ul>
<pre>
<!-- comments -->
    // comments
    function program_1 () {
        console.log("this will be logged");
        // console.log("this will be commented");
        console.log("this will be logged again");
        /* console.log("this will be commented again"); */
        /*
        console.log("this will also be commented");
        */
    }
    program_1();
    // output:
    // this will be logged
    // this will be logged again
</pre>
<hr />
    javascript consists of 8 different types of data structures
    <ul>
        <li>undefined</li>
        <li>null</li>
        <li>boolean</li>
        <li>string</li>
        <li>symbol</li>
        <li>bigint</li>
        <li>number</li>
        <li>object</li>
    </ul>
    data is stored in variable with assignment operator<br />
<pre>
    // variables
    // 8 types: undefined, null, boolean, string, symbol, bigint, number, object
    var var_undefined;
    console.log(typeof var_undefined); // undefined
    var var_null = null;
    console.log(typeof var_null); // object
    // In JavaScript null is "nothing". It is supposed to be something that doesn't exist.
    // Unfortunately, in JavaScript, the data type of null is an object.
    // We can consider it a bug in JavaScript that typeof null is an object. It should be null.
    var var_boolean = true;
    console.log(typeof var_boolean); // boolean
    var var_string = "a2rp: an Ashish Ranjan presentation";
    var $_var_string = "dollar variable";
    console.log(typeof var_string, typeof $_var_string); // string string
    var var_bigint1 = 99n;
    var var_bigint2 = BigInt(99);
    console.log(typeof var_bigint1,typeof var_bigint2); // bigint bigint
    var var_number = 22.7;
    console.log(typeof var_number); // number
    var var_object = new Date();
    console.log(typeof var_object); // object
</pre>
<hr />
Assigning the Value of One Variable to Another
<br />
<pre>
// Assigning the Value of One Variable to Another
var variable_1 = 22.7;
var variable_2 = variable_1;
console.log("variable_2 = ",variable_2); // variable_2 = 22.7</pre>
<hr />
case sensitive variables
<br />
<pre>
    // javascript case sensitive variables
    var small_case_variable = true;
    var SMALL_CASE_VARIABLE = false;
    console.log(small_case_variable, SMALL_CASE_VARIABLE); // true false
</pre>
<hr />
Differences Between the var and let Keywords
<br />
<pre>
// Differences Between the var and let Keywords
var name = "Ashish";
var name = "Ranjan";
console.log("name:",name); // name: Ranjan
let name1 = "Ashish";
// Cannot redeclare block-scoped variable 'name1'.ts(2451)
// let name1 = "Ranjan"; // Uncaught SyntaxError: Identifier 'name1' has already been declared</pre>
<hr />
Declare a Read-Only Variable with the const Keyword
<br />
<pre>
// Declare a Read-Only Variable with the const Keyword
let mutable_var = 15;
mutable_var = 20;
console.log("mutable_var:",mutable_var); // mutable_var: 20

const readonly_var = 25;
// readonly_var = 30; // Uncaught TypeError: Assignment to constant variable.</pre>

<hr />
add numbers
<br />
<pre>
    // add numbers
    let number_1 = 20;
    let number_2 = 20.12;
    let number_3 = number_1 + number_2;
    console.log(number_3); // 40.120000000000005
</pre>

<hr />
subtract numbers
<br />
<pre>
// subtratc numbers
let subtract_number_1 = 20;
let subtract_number_2 = 20.12;
const subtract_result = subtract_number_1 - subtract_number_2;
console.log(subtract_result); // -0.120000000000001</pre>
<hr />

multiply numbers
<br />
<pre>
// multiply two numbers
const multiplied_numbers = 12 * 34;
console.log(multiplied_numbers); // 408</pre>
<hr />

divide numbers
<br />
<pre>
// divide numbers
const divide = 23 / 2;
console.log(divide); // 11.5</pre>
<hr />

increment
<br />
<pre>
// icrement
let i = 0, j = 0, k = 0;
console.log(++i,j++,k+=1); // 1 0 1
console.log(i,j,k); // 1 1 1
</pre>
<hr />

decrement
<br />
<pre>
// decrement
let a = 0, b = 0, c = 0;
console.log(--a,b--,c-=1); // -1 0 -1
console.log(a,b,c); // -1 -1 -1</pre>
<hr />

remainder
<br />
<pre>
// remainder
let remainder_num1 = 33;
let remainder_num2 = 10;
console.log(remainder_num1%remainder_num2); // 3</pre>
<hr />

Compound Assignment With Augmented operation
<br />
<pre>
// Compound Assignment With Augmented operation
let compound_assignment_number = 17;
console.log(compound_assignment_number+=7); // 24
console.log(compound_assignment_number-=7); // 17
console.log(compound_assignment_number*=7); // 119
console.log(compound_assignment_number/=7); // 17</pre>
<hr />

escape sequences
<br />
<ul>
    <li>\b   Backspace</li>
    <li>\f   Form Feed</li>
    <li>\n   New Line</li>
    <li>\r   Carriage Return</li>
    <li>\t   Horizontal Tabulator</li>
    <li>\v   Vertical Tabulator</li>
    <li>\'   Single quote</li>
    <li>\"   Double quote</li>
    <li>\\   Backslash</li>
</ul>
<pre>
</pre>


</div>
</body>
</html>